我有以下宏:
#define FREE1(x) do { free(x); x = NULL; } while (0)
#define FREE2(x) free(x); x = NULL
这些宏之间有什么区别?
答案 0 :(得分:4)
自己想出这个可能会更令人满意。
提示:
if(y) FREE2(x);
答案 1 :(得分:4)
考虑以下示例
if (some_test) FREE2(x);
扩展为
if (some_test)
free(x);
x = NULL; // happens regardless of value of some_test