为什么AIX xlc编译器给出错误';参数声明列表与全局参数的声明程序不兼容?
我有一个适用于所有平台(AIX、windows、linux等)的通用代码,它公开了共享库中的一些函数。为什么AIX xlc编译器给出错误';参数声明列表与全局参数的声明程序不兼容?,c,aix,xlc,C,Aix,Xlc,我有一个适用于所有平台(AIX、windows、linux等)的通用代码,它公开了共享库中的一些函数。 在AIX xlC上,编译器给了我以下错误: 参数声明列表与全局 在线: GLOBAL extern const char * abc; 而全球的定义是: #if defined (WINDOWS) #define GLOBAL __declspec(dllexport) #else #define GLOBAL #endif 谁能帮我一下这个错误的原因是什么 编辑: 我的
在AIX xlC上,编译器给了我以下错误: 参数声明列表与全局 在线:
GLOBAL extern const char * abc;
而全球的定义是:
#if defined (WINDOWS)
#define GLOBAL __declspec(dllexport)
#else
#define GLOBAL
#endif
谁能帮我一下这个错误的原因是什么
编辑:
我的xlc veriosn是11.1。早期的代码与早期版本的xlc使用的代码相同。您确定在
外部声明上方确实有#define GLOBAL
?我得到的确切错误是并且只有在我没有定义的情况下GLOBAL@IngoLeonhardt我确信,你能帮我理解错误信息的含义吗?我不能理解它。非常感谢您这么看。对我来说,这个错误至少表明编译器仍然可以看到符号GLOBAL
,而不是像应该的那样被预处理器替换。您可以运行cc-esource.c>tmpfile
并查看tmpfile预处理器的功能。我想你仍然会发现全局的(但现在应该什么都不替换)