作者:Damon777 | 来源:互联网 | 2024-10-23 12:48
#defineWIN32_LONG_TO_INT64_BEGIN\#ifdefWIN32\#definelong__int64\#endifWIN32_LONG_TO
#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif
WIN32_LONG_TO_INT64_BEGIN
---------------------
你好,像这样宏定义里边有宏定义,编译报错
error C2121: '#' : invalid character : possibly the result of a macro expansion
我就是想要弄的简写点,该怎么写才对呢?
12 个解决方案
#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif
去掉宏后面的\
该符号在一个宏要定义为多行时使用
#define WIN32_LONG_TO_INT64_BEGIN \
#ifdef WIN32 \
#define long __int64 \
#endif
预编译的时候 看到的指令是
#define WIN32_LONG_TO_INT64_BEGIN #ifdef WIN32 #define long __int64 #endif
于是 Over
如果先定义一个宏,然后需要多条语句分行写时,需要用到"\",现在看你的代码是每行都是一个完整的宏,所以不需要添加"\"
宏定义里
不能有预编译指令
代码生成吧,自己做个预预编译器,先处理这种预编译器不支持的宏