确定是否为byte和vec3_t typedef' d

时间:2014-09-28 03:16:55

标签: c byte c-preprocessor c11 preprocessor-directive

C11有一些东西作为规范的一部分,如byte和vec3_t。

有没有办法通过#ifdef确定这些是否已被定义为尽可能多的编译器而没有警告?

1 个答案:

答案 0 :(得分:1)

您误解了错误消息。这些类型不是由C11定义的,但它们似乎已经在其他地方的包含文件中定义。消息引用的是,因为C11 typedef可以重新迭代,如果它们引用相同的类型。这样做具有与变量或函数声明或#define相同的行为。所有这些都可以出现几次,只要它们是一致的。

要使用该功能,您应该使用选项-std=c11-std=gnu11进行编译。这应该会使消息消失。

在您的情况下,该消息可能表明您的包含逻辑中存在一些错误,因此最好能够直接理解。