gpt4 book ai didi

c++ - #define 语句中的预期标识符

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:12 24 4
gpt4 key购买 nike

[请参阅下面我自己的回答。]

我的项目的头文件中有这段代码:

#ifdef _LINUX
#ifdef BUILD_ext
#define EXP_IMP_GLOBAL extern
#else
#define EXP_IMP_GLOBAL
#endif
#else

当定义 BUILD_ext 时,G++ 告诉我以下信息:

error: expected identifier before ‘extern’
#define EXP_IMP_GLOBAL extern
^
note: in expansion of macro ‘EXP_IMP_GLOBAL’
class EXP_IMP_GLOBAL Classname
^~~~~~~~~~~~~~

我真的不知道这个错误是怎么回事,因为当没有定义 BUILD_ext 时错误不会出现,而且我也不明白,为什么没有标识符。

最佳答案

I don't really know what to make of this error since the error doesn't appear when BUILD_ext is not defined and I also don't see, why there would be no identifier.

_LINUXBUILD_ext 都被定义时,EXP_IMP_GLOBAL 被扩展为 extern。所以你有:

class extern Classname

在您的代码中。

根据这个page :

The extern specifier is only allowed in the declarations of variables and functions (except class members or function parameters).

所以你不能在类声明/定义中使用 extern 说明符,编译器会报错。

我想您可以简单地删除 EXP_IMP_GLOBAL 来消除错误,因为 EXP_IMP_GLOBAL 在像现在这样使用时没有意义。

关于c++ - #define 语句中的预期标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45482424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com