當我編譯如下程序: g++ -O2 -s -static 2.cpp
它給了我警告ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
。
但是,當我從複製語句中刪除-02
時,不顯示警告。忽略'int scanf(const char *,...)'的返回值,用屬性warn_unused_result [-Wunused-result]聲明?
我2.cpp
程序:
#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
這是什麼警告的意思,什麼是-O2
意思?
讓我怎麼消除這種警告,因爲直到日期,所有我寫我從來沒有檢查scanf函數的返回值的C程序!還有什麼是這個優化參數可以拋出一些光? –
@perh這是一個很好的理由嗎? – Antonio
好吧,不檢查意味着如果任何一個變量沒有被sscanf設置(使用未初始化的值),程序將返回錯誤的值。這只是一個警告,不是一個錯誤。至於由於缺乏編譯器執行的分析而未使用(至少)-O時未顯示 - 這就是它的原因。 – perh