在一些Bison代码中,以下行是什么意思?
#define YY_DECL extern "C" int yylex();
Run Code Online (Sandbox Code Playgroud)
我知道#define命令,但我不明白整个命令.
这意味着YY_DECL将扩展到
extern "C" int yylex();
Run Code Online (Sandbox Code Playgroud)
这实际上是C++,而不是C; 当您使用C++编译器编译此文件时,它声明该函数yylex必须使用"C linkage"进行编译,以便C函数可以毫无问题地调用它.
如果你不用C++编程,这在很大程度上与你无关,但你可能会在C头文件中遇到类似的声明,试图与C++兼容的库.C和C++可以在一个程序中混合使用,但它需要这样的函数声明才能很好地协同工作.
可能就是#ifdef __cplusplus这个#define; 这是一个特殊的宏,用于表示C++编译器的编译.