我不明白爲什麼這個工程:GCC的typeof擴展
/* gcc range extension */
__extension__ static int fn(int n)
{
switch (n) {
case 0: return 0;
case 1 ... 1000: return 1;
default: return -1;
}
}
但這並不:
/* gcc typeof extension */
__extension__ static void fn(int n)
{
typeof(n) a = n;
printf("%d\n", a);
}
GCC回報:
demo.c:14: warning: implicit declaration of function ‘typeof’
demo.c:14: warning: nested extern declaration of ‘typeof’
demo.c:14: error: expected ‘;’ before ‘a’
demo.c:16: error: ‘a’ undeclared (first use in this function)
demo.c:16: error: (Each undeclared identifier is reported only once
demo.c:16: error: for each function it appears in.)
我知道我可以編譯-std=gnu99
以避免錯誤,但第一個與-std=c99
一起使用,並使用擴展
哇!!!!那麼'#define typeof __typeof__'避免了這個問題? –
@大衛:是的,它應該。 :) – askmish
謝謝安東和askmish;) –