2017-05-08 76 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