我有宏是这样的:应用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