我正在尝试使用eclipse IDE运行程序,但是我得到了上面提到的错误。
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
tCRU_BUF_CHAIN_HEADER *CRU_BUF_Allocate_MsgBufChain ARG_LIST((UINT4 u4Size,UINT4 u4ValidOffsetValue));
[some more macros where this error comes]
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
是错误之一,出现错误:
“'ARG_LIST'之前预期的初始化者”
准确地说,有18个相同类型的宏给出了这个错误,在我删除“ARG_LIST”的那一刻,错误就消失了,但是因为这不是我创建的代码我不想删除这部分。
我试图在网上找到一个解决方案但找不到东西,现在我希望有人可以帮助我。
如果您需要更多信息,我会尽快回答。
答案 0 :(得分:2)
我认为您可以放心地删除ARG_LIST部分。像ARG_LIST这样的宏用于旧的(20世纪70年代)C ++版本,其中函数/方法没有指定它们所采用的参数。例如,您声明了一个这样的函数:
tCRU_BUF_CHAIN_HEADER *CRU_BUF_Allocate_MsgBufChain();
你可以用任意数量的论点来调用它。
然后,当语言中添加了全功能签名时,程序员定义了宏来利用支持它的编译器中的类型检查,但仍然使代码与不支持它的编译器兼容:
#ifdef FULL_SIGNATURES_SUPPORTED
#define ARG_LIST(list) list
#else
#define ARG_LIST(list) ()
#endif
现在所有编译器都支持完整签名,因此没有必要使用这些宏。