3

私はオンライン チュートリアルに従い、#undefデバッグ出力関数の設計に使用したいと考えました。debugOut.hファイルを書きました。内容は以下の通りです:</p>

#include <stdio.h>

#define NOOP //(void(0))

#undef DEBUG_PRINT

#if DEBUG_OUT
#define DEBUG_PRINT printf
#else 
#define DEBUG_PRINT(...) NOOP
#endif 

#undef DEBUG_OUT

次に、設計が正しいかどうかをテストするメイン関数を作成しました。

#include<iostream>
#include "Header/debug_out.h"
#define DEBUG_OUT
int main(){
    DEBUG_PRINT("module1 debug...\n");
    printf("hello,world");
}

しかし、出力結果はhello, world. なぜ私が定義#define DEBUG_OUTしたのか、なぜにDEBUG_PRINT置き換えられないのかprintf

私はオンラインチュートリアルに基づいてそれを書きました。これを元にc++の出力関数を書きたいと思います。しかし、文#define DEBUG_PRINT(...) NOOPでは、何(...)を表していますか? マクロ定義が置き換えられたものを出力する方法はありますか?

4

2 に答える 2