爲什麼當ON
或OFF
模式嚴格遵守ANSI C
程序會產生不同的結果?遵守嚴格的有關的原因,大多數現代工業的編譯器默認了自己的語言的一些擴展,以及一些默認的寫作是C99等不同的結果與開/關模式嚴格符合ANSI C
#include <stdio.h>
#include <string.h>
int main (void)
{
int len;
len = strlen ("??=");
printf ("len=%d\n", len);
return 0;
}
下面是結果。在提交編譯選項-w
抑制警告這兩種情況下:
$ gcc t.c -w
$ ./a.out
len=3
$ gcc t.c -ansi -w
$ ./a.out
len=1
抑制警告是不是一個好主意:)存在無風不起浪。 (對於'int main(void)',仍然爲+1) –
我很好奇 - 你是否偶然發生了使用'「?? =」'作爲測試字符串,你在更大的程序中遇到奇怪並縮小它到這個,或者你已經知道'「?? =」'是一個三元組,但仍然不確定不同的結果? –
@邁克爾伯爾我故意使用三字母。但我最近遇到他們,所以還沒有弄清楚細節 – dima