【发布时间】:2018-05-14 20:05:39
【问题描述】:
我正在尝试使用以下方法打印错误消息,但在 __VA_ARGS__ 上不断出现错误。函数中使用ERROR_HANDLER()检查sensor_id是否无效:
sensor_value_t datamgr_get_avg(sensor_id_t sensor_id);
#define ERROR_HANDLER(condition,...) do { \
if (condition) { \
printf("\nError: in %s - function %s at line %d: %s\n", __FILE__, __func__, __LINE__, __VA_ARGS__); \
exit(EXIT_FAILURE); \
} \
} while(0)
来自comment
我不确定如何使用 ERROR_HANDLER。我必须测试有条件的东西吗?喜欢:
ERROR_HANDLER(sensor_id != NULL, "invalid sensor_id");
【问题讨论】:
-
你的代码编译得很好。你可能想要
!condition那里。ERROR_HANDLER(0, "some text");为我工作。你得到哪个错误?我得到:Error: in /tmp/Test/Test/main.c - function main at line 25: some text. -
我不确定如何使用 ERROR_HANDLER。我必须测试有条件的东西吗?像“ ERROR_HANDLER(sensor_id != NULL", "invalid sensor_id")?
标签: c error-handling