【发布时间】:2017-08-26 23:26:52
【问题描述】:
我正在使用内置 CDT 9.3.0 的 Oxygen。
当我使用我定义的使用 _Generic 的宏时,所有这些宏使用都带有“语法错误”下划线,但项目编译良好(设置为使用我的 makefile)。
在阅读了similar 这样的问题后,并且由于 Eclipse 的代码分析可能不支持 _Generic 从 C11 开始,我尝试为我的宏定义定义一个符号为空,但它不起作用。 (在项目设置中,C/C++ General->Paths and Symbols->Symbols Tab,GNU C,添加了不带值的符号 CONVERT(...) 并添加了符号 CONVERT(X),以及不带值的 CONVERT() 和 CONVERT值)。
例如我的宏是:
#define FIRST_(_1, ...) _1
#define FIRST(...) FIRST_(__VA_ARGS__, _1, _2, _3)
#define CONVERT(...) \
_Generic((FIRST(__VA_ARGS__)), \
char* : toText, \
int : toInt, \
) (__VA_ARGS__)
和使用点,它给出了语法错误:
void* test = CONVERT("testme");
【问题讨论】:
-
_Generic来自 C11 标准。据我所知,Eclipse 的“智能感知”还不支持它。
标签: c eclipse-cdt