1
我有後續的測試代碼test.c
:如何在使用時忽略錯誤 - 錯誤?
#include<stdio.h>
int *func()
{
int i = 123;
return &i;
}
int main()
{
printf("%d\n", *func());
}
如果我用命令編譯這是確定的:
gcc test.c -o test
這將有後續的警告信息:
warning: address of stack memory associated with local variable 'i'
returned [-Wreturn-stack-address]
return &i;
^
1 warning generated.
但它可以輸出結果:123
如果我使用命令:
gcc -Werror test.c -o test
這將有如下錯誤信息:
error: address of stack memory associated with local variable 'i'
returned [-Werror,-Wreturn-stack-address]
return &i;
^
1 error generated.
現在我想用-Werror
選項,但我也想忽略address of stack memory associated with local variable 'i'
警告,我應該怎麼做?
你意識到返回一個指向堆棧變量的指針是一個糟糕的主意,對吧?如果你完成任何函數調用(包括隱式函數調用,有時在你用'= {0}初始化一個struct/array時執行),指針引用的值將不再有效。這是一個原因的警告。 – ShadowRanger
謝謝@ ShadowRanger我明白了,我只想暫時解決它。 – thinkerou