我正在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__"
出了什么问题,我该如何解决?
答案 0 :(得分: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))
根本不是有效的表达。