次の方法で無効にしたい既存のprintfステートメントがたくさんあります。
#define printf(...) {};
しかし、stdio printf を引き続き使用する新しい myprintf ステートメントを定義したいと考えています。どうすればいいですか?
次の方法で無効にしたい既存のprintfステートメントがたくさんあります。
#define printf(...) {};
しかし、stdio printf を引き続き使用する新しい myprintf ステートメントを定義したいと考えています。どうすればいいですか?
使用する:
#define myprintf (printf)
括弧はマクロ展開を無効にします。
#include <stdio.h>
#define printf(...) do {} while(0)
#define myprintf (printf)
int main() {
printf("printf\n");
myprintf("myprintf\n");
}
(そもそも #defining printf
away をお勧めするわけではありません...)
do {} while(0)
の代わりに使用した理由の説明については、 Proper C preprocessor macro no-op{}
を参照してください。