正如你可以在下面的代碼中看到的,我介紹了一個嵌套函數內main()
:如何禁用GNU C擴展?
#include <stdio.h>
int main(){
int a=5;
printf("%d\n",a);
{
int a=10;
printf("%d\n",a);
}
printf("%d\n",a);
//Nested function
int main(int a){
if(a>0)printf("%d\n",a--);
return 0;
}
main(7);
return 0;
}
至於我能理解我用-std=c99
標誌GCC爲「禁用」的不必要的擴展,但我沒有得到任何錯誤。
gcc temp3.c -std=c99 -o temp3.out
哪裏有我犯的錯?
添加'-pedantic -Werror'應該可以解決這個問題。 –
那麼-std = c99標誌有什麼用? –
'-std = c99'標誌禁用GCC認爲應該禁用的GNU擴展 - 例如POSIX版本等。請參閱[C語言選項](https://gcc.gnu.org/onlinedocs/gcc/C- Dialect-Options.html#C-Dialect-Options)來表示'-std ='的含義;有關'-pedantic'的含義,請參閱[警告選項](https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options)。 –