在我们的一些linux盒子上用gcc -std = c99进行编译使得struct ip_mreq消失了(包含在netinet / in.h中)
我们应该使用其他界面吗?
答案 0 :(得分:5)
尝试--std = gnu99。
GCC的默认值是'--std = gnu89',这意味着C89具有GNU扩展名。通过选择'--std = c99',您将启用C99,但禁用GNU扩展。 '--std = gnu99'将选择C99和GNU扩展支持,为您提供两全其美的优势。
答案 1 :(得分:0)
我认为c99之前还没有其他界面。如果您在源代码顶部添加以下内容,则可以将其与-std=c99
一起使用:
#define __EXTENSIONS__
但更好的方法可能是
#define _XOPEN_SOURCE
请注意,我还没有确认。
答案 2 :(得分:0)
我遇到了同样的问题。当我不提供“-std = c99”时,使用gcc编译所有内容都很好,但是当包含该标志时,编译器无法说明类型为'struct ip_mreq'的字段的类型不完整。“
这是一个问题,因为我依赖于某些C99功能。