Ykt*_*ula 7 c linux gcc c99 language-extension
为什么Linux内核只能用GCC编译?某些项目真正需要哪些GNU C扩展,为什么?
这是Linux内核使用的几个gcc扩展:
这里还有一些:http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/
这些gcc细节中的大部分都是非常依赖于体系结构的,或者由于gcc的实现方式而成为可能,并且可能没有理由被C标准指定.其他只是对C的方便扩展.由于Linux内核是依赖于这些扩展而构建的,因此其他编译器必须提供与gcc相同的扩展才能构建内核.
并不是说Linux 必须依赖gcc的这些功能,例如NetBSD内核很少依赖于gcc特定的东西.