1
可能重複:
Can I make GCC warn on passing too-wide types to functions?如何將g ++打印警告的類型轉換爲函數的參數?
有沒有一種方法,使海灣合作委員會或g當我通過一個有符號整數,以接受一個unsigned int類型的函數++產生一個警告?
例如:
int main(){
char buf[8];
int i;
for(i=0;i<6;i++)
buf[i] = 'a';
buf[6]='\0';
strcat(buf, " ");
strncat(buf, "happystacksmashingstring",-1);
return 0;
}
將導致堆棧溢出,因爲strncat函數取爲size_t作爲它的第三個參數,這常常是一個unsigned int。然而,命令:
g++ -Wall -Wextra -Werror -pedantic -W -Weffc++ -Wconversion test.c
其中包含每一個警示標誌,我知道,不產生錯誤或警告在編譯時和運行時撞碎的堆棧。
gcc -Wall -Wextra -Werror -pedantic -W -Wconversion test.c
現將有關對比度的隱式轉換產生錯誤。爲什麼-Wconversion標誌不能正確使用g ++?
-WSign-conversion。 [在C++中,除非明確啓用了-Wsign-conversion,否則默認情況下,在C++中禁用有符號整數和無符號整數之間轉換的警告。](http://linux.die.net/man/1/g++ ) – remi
@remi抱歉,看到你的評論太遲。如果您發佈了答案,我將刪除我的 – codeling
@RandolphCarter關於重複的問題:另一個問題涉及自動收集,但是類型不同。在我自己搜索我的問題的答案時,我沒有遇到它,並且它提出的答案(使用-Wconversion)在任何情況下都不能解決問題。 –