2017-05-08 77 views
0

我有可以使用GCC象下面没有问题编译交流文件:编译嵌套函数与铛与GCC

gcc foo.c

但是,使用我接收具有内部主定义的函数的误差相同的文件使用clang

clang foo.c

foo:230:1: error: function definition is not allowed here 
{ 
^ 
foo.c:241:1: error: function definition is not allowed here 
{ 
^ 
foo.c:253:1: error: function definition is not allowed here 

这些研究所错误的主要部分是代码主要部分中新函数的定义。我想知道为什么海湾合作委员会不会因为这件事而烦恼呢?函数中定义

回答

3

函数是一个扩展的C语言,与gcc实现。这是默认启用的。如果您的gcc标准的C编译器,与-ansi -pedantic-std=C99或类似,它同样会抱怨嵌套函数的定义:

x.c: In function ‘main’: 
x.c:8:5: warning: ISO C forbids nested functions [-Wpedantic] 
    int nested(void) 
    ^
+0

感谢@Jens。你知道这是否也是在叮当中实现的吗?铛4.0.0的 – Amir

+2

@Amir作为,铛不支持嵌套函数。你为什么要他们?如果你是在源代码的控制,你可以重写源和移动嵌套函数到文件的范围。 – Jens

+0

我知道了,谢谢:) – Amir