13

我仍在努力编译 C 控制台应用程序,编译过程仍然失败并出现以下错误:

"Main.c", line 51: error #2040: expected an identifier
  extern "C" void TreatReceivedSignal( int NoSignal ) ;
         ^
1 error detected in the compilation of "Main.c".
gmake: *** [Main.o] Error 2

在 C 代码上的 extern 方法声明下方:

extern "C" void TreatReceivedSignal( int NoSignal ) ;

我正在使用 HP-UX aCC 编译器 [HP C/aC++ B3910B A.06.26],我还打开了编译标志 -Ae 以启用 C99 支持。似乎编译器无法将'extern“C”'识别为C保留字,可能需要设置其他一些编译标志。请问有什么办法可以解决这类问题吗?非常感谢您提前。问候

4

1 回答 1

30

extern "C"构造是 C++ 特定的东西,它不能在 C 中使用。编译器将您的源文件视为 C 源文件,因为它具有扩展名.c.

最常见的做法是使用预处理器有条件地将其添加到 C++ 编译中:

#ifdef __cplusplus
extern "C" {
#endif

/* Standard C prototypes */

#ifdef __cplusplus
}
#endif
于 2013-04-24T13:11:48.827 回答