-1

我在 Solaris 10 for x86 上编译一个 C 程序,代码是:

#if defined (__GNUC_MINOR__)&&2093<=(__GNUC__*1000+__GNUC_MINOR__) __attribute__ ((__unused__))
#endif

当我编译它时,我收到错误消息:

error: expected primary-expression before "__attribute__"; error: expected ';' before "__attribute__"

出了什么问题,我该如何解决?

4

1 回答 1

2

这需要分布在 3 行中:

#if defined (__GNUC_MINOR__)&&2093<=(__GNUC__*1000+__GNUC_MINOR__)
 __attribute__ ((__unused__))
#endif

这将测试您是否使用了合适的 GCC 版本(基于 GCC 版本号),如果是,unused则为这些行之前的任何内容生成属性注释。

如所写,表达式根本无效;Solaris 上的 C 预处理器可能看到:

#if defined(__GNUC_MINOR__) && 2093 <= (0*1000+0) 0 ((0))

这根本不是一个有效的表达式。

于 2012-11-02T03:06:17.117 回答