为什么AIX xlc编译器给出错误';参数声明列表与全局参数的声明程序不兼容?

为什么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、windows、linux等)的通用代码,它公开了共享库中的一些函数。
在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预处理器的功能。我想你仍然会发现
全局的
(但现在应该什么都不替换)