下一页:通用编译器特性,向上:编译器和预处理器 [目录][索引]
有些编译器表现出不同的行为。
Autoconf依靠一种技巧从C中提取一位信息编译器:使用负数组大小。例如以下内容C源代码的摘录演示了如何测试“整数'对象为4字节宽度:
静态int test_array[sizeof(int)==4?1:-1];
据我们所知,有一个编译器不支持此功能诀窍:HP C编译器(真正的编译器,而不仅仅是“捆绑”)。他们错误地拒绝了上述诊断程序“可变长度阵列不能有静态存储。”此错误源于HP编译器错误处理大小(int),不是来自? 1 : -1、和Autoconf通过强制转换来解决此问题大小(int)到长整型在比较之前。
大小(int)
? 1 : -1
长整型