2014-02-10 27 views
0

我寫了代碼,一切就OK了,編譯和工作沒有問題,當我用GCC 4.7.2開關-Wall我得到以下警告編譯:POSIXÇ`警告:變量「表」集而不used`

warning: variable ‘tables’ set but not used [-Wunused-but-set-variable] 

我知道這不是問題,但它爲什麼會出現?看起來不合邏輯:

const unsigned char *tables; 
char *loc = setlocale(LC_ALL, 0); 
setlocale(LC_ALL, loc); 
tables = pcre_maketables(); 

我的變量是SET並且被使用。任何想法?

+4

我沒有看到,它被使用,除了分配。 –

+2

你只分配東西它(你設置它)。但你不使用它的話,那麼爲什麼你懶得GCC奇蹟分配給它,如果你不打算用它做什麼。 – nos

+0

分配變量'tables'爲NULL。 – t0mm13b

回答

1

從編譯器的角度來看,存在之間沒有行爲的差異:

const unsigned char *tables; 
char *loc = setlocale(LC_ALL, 0); 
setlocale(LC_ALL, loc); 
tables = pcre_maketables(); 

char *loc = setlocale(LC_ALL, 0); 
setlocale(LC_ALL, loc); 
pcre_maketables(); 

編譯器將優化出分配和翻譯後者。

+0

我明白了。我將只使用該功能。 – bsteo

+0

我忘了我已經設置了'pcre_exec'然後我就用'0'爲'默認字符tables'進一步使用它 – bsteo