我有宏是這樣的:應用noreturn屬性宏函數調用
#define error_exit(format, ...) \
error_at_line(EXIT_FAILURE, 0, __FILE__, __LINE__, format, ##__VA_ARGS__)
,我用它來作爲一般的致命錯誤功能。不幸的是,error_at_line沒有noreturn gcc屬性,因爲如果你指定0作爲第一個參數,它會返回。這會導致問題,特別是,我得到未初始化的變量警告,因爲gcc無法確定error_exit永遠不會返回。
例如:
int x;
switch(...) {
case VALID:
x = 1;
break;
default:
error_exit(...);
}
return x;
給我的警告。那麼,我該如何去應用noreturn宏或甚至特定的函數調用?
我結束了使用編譯指示來禁用受影響的代碼行警告,但這似乎也是一個很好的解決方案 – btmorex