1

次の方法で無効にしたい既存のprintfステートメントがたくさんあります。

#define printf(...) {};

しかし、stdio printf を引き続き使用する新しい myprintf ステートメントを定義したいと考えています。どうすればいいですか?

4

1 に答える 1

4

使用する:

#define myprintf (printf)

括弧はマクロ展開を無効にします。

#include <stdio.h>

#define printf(...) do {} while(0)
#define myprintf (printf)

int main() {
  printf("printf\n");
  myprintf("myprintf\n");
}

(そもそも #defining printfaway をお勧めするわけではありません...)

do {} while(0)の代わりに使用した理由の説明については、 Proper C preprocessor macro no-op{}を参照してください。

于 2013-03-13T17:23:07.563 に答える