Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
重複の可能性: C/C++ マクロの Do-While および if-else ステートメント
次のマクロがあります。
#define FREE1(x) do { free(x); x = NULL; } while (0) #define FREE2(x) free(x); x = NULL
これらのマクロの違いは何ですか?
これは自分で調べた方が満足できるかもしれません。
ヒント:
if(y) FREE2(x);
次の例を考えてみましょう
if (some_test) FREE2(x);
に展開します
if (some_test) free(x); x = NULL; // happens regardless of value of some_test