Форум программистов, компьютерный форум CyberForum.ru

Использование строк в макросах С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Квадратное уравнение http://www.cyberforum.ru/cpp-beginners/thread783801.html
Прога работает, но неправильно считает корни, что не так??? #include <stdio.h> #pragma hdrstop #include <math.h> #include <conio.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv) {float a,b,c,d,x1,x2;
C++ Геометрическая задача (Найти стороны треугольника) Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника. Помогите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread783795.html
C++ Литература С++
Всем привет ! Нужен список литературы поочередный , с чего начать не зная никакие языки и тд. , можно и видео самоучителей . Желательно с упражнениями , потомучто скоко литературы пересмотрел ничего дельного не нашел . Также список нужных программ для создания программ и дополнительное ПО ,буду благодарен за вашу помощь.
C++ Рекурсия. Составьте программу, которая для заданного натурального числа n вычисляет значение выражения
Составьте программу, которая для заданного натурального числа n вычисляет значение выражения: 1/1+1/2+1/3+1/4+1/...n-1+1\n
C++ нужно исправить ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread783781.html
#include <iostream> using namespace std; template< class T > void selectSort(T* arr, int SIZE) { T tmp; for(int i = 0; i < SIZE; ++i) // i - номер текущего шага { int pos = i; tmp = arr;
C++ -0.1+0.1=-1.38778e-016 Всем доброго времени суток . Такая проблемка . #include <windows.h> #include <iostream> #include <iomanip> #include <fstream> #include <cmath> #include <cstdlib> using namespace std; подробнее

Показать сообщение отдельно
demogor
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 10
11.02.2013, 21:45  [ТС]     Использование строк в макросах С++
Пардон, торопился, ошибся, когда в уме модифицировал.
Переделывал из рабочего макроса

C++
1
2
3
4
5
#define RF_O(ret, type_cl, name1, adres, ...)\
    typedef ret ( type_cl * t##name1 ) ( __VA_ARGS__ );\
    /*__declspec(dllexport) */t##name1 __declspec(dllexport) name1##_Detour = ( t##name1 ) ( adres );\
    __declspec(dllexport) void type_cl name1##_hook(__VA_ARGS__);\
    BYTE name1##_var[6];\

Реальный код таков:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#define DECLARE_FUNC(name1, body, type_cl, ...)\
    __declspec(dllexport) void type_cl name1##_func(__VA_ARGS__){\
    debug_msg("TestDeclare","hello!");\
    body;\
}\
 
 
#define RF_IMP(ret, type_cl, body, name1, ...)\
    DECLARE_FUNC(name1,body,type_cl, __VA_ARGS__);
 
char *declare = "debug_msg(\"TestDeclare\",\"hello!\")";
RF_IMP(void, __cdecl, declare,testDeclare,void);
В таком варианте полученная функция выглядит так:

C++
1
2
3
4
5
6
__declspec(dllexport) void __cdecl name1_func(void);
 
void __cdecl name1_func(void)
{
body;
}

Вот проблема в том, как обработать body.

P.S. Код рабочий, за исключением того, что не в курсе, как строку преобразовать в тело функции. Если подставить туда a1(ну или любые другие аргументы) + написать тело вручную, то все будет работать отлично. К примеру, аналогичный макрос предназначен для универсального парса lua_State перехваченных функций в 1 игрушке, использующей луа-движок.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru