macros: not a valid preprocessing token
windows上的宏定义正确,gcc编译报错。
如
#define REGISTER_JOB_PROC(X) g_PacketMgr.Register(##X,CServerFunction::_Proc_##X)
但是linux上make报错。
解决如下:
#define REGISTER_JOB_PROC(X) g_PacketMgr.Register(X,CServerFunction::_Proc_##X)
正确。原因看上面的连接。不使用连接符号,直接使用数值。
本文介绍了一个在GCC编译器中宏定义的常见错误及其修正方法。通过调整宏定义中的符号引用方式,解决了Windows环境下正确的宏定义在Linux下GCC编译时报错的问题。
575

被折叠的 条评论
为什么被折叠?



