在 wireshark source 裡面,看到有些奇怪的 C 語言寫法 : 查不到定義的 _U_。在這裡當備忘錄記一下:
hostname$ cat foo.c
int foo(int a _U_, int b _U_, int c)
{
return c + 17;
}
#hostname$ gcc -D_U_= -c -O2 -Wall -W foo.c
foo.c: In function `foo':
foo.c:2: warning: unused parameter `a'
foo.c:2: warning: unused parameter `b'
上面定義 _U_ 為"什麼東東都沒有" ,結果出現 compiler warning.
#hostname$ gcc -D_U_="__attribute((unused))" -c -O2 -Wall -W foo.c
#hostname$ gcc --version
2.95.1f
這裡 _U_ 被定義為 attribute of "suppress unused variable warning",所以就沒有 compiler warning 了!
那為何不使用的參數不拿掉呢? 不知道耶! 猜想是為了將來需要時不用動到很多 callers 就可以修改 function code 吧!
hostname$ cat foo.c
int foo(int a _U_, int b _U_, int c)
{
return c + 17;
}
#hostname$ gcc -D_U_= -c -O2 -Wall -W foo.c
foo.c: In function `foo':
foo.c:2: warning: unused parameter `a'
foo.c:2: warning: unused parameter `b'
上面定義 _U_ 為"什麼東東都沒有" ,結果出現 compiler warning.
#hostname$ gcc -D_U_="__attribute((unused))" -c -O2 -Wall -W foo.c
#hostname$ gcc --version
2.95.1f
這裡 _U_ 被定義為 attribute of "suppress unused variable warning",所以就沒有 compiler warning 了!
那為何不使用的參數不拿掉呢? 不知道耶! 猜想是為了將來需要時不用動到很多 callers 就可以修改 function code 吧!
沒有留言:
張貼留言