C++のDEBUGマクロ
2023-09-09 03:38:47
質問
C言語のDEBUGマクロで、とても気に入ったものがあります。
#ifdef DEBUG_BUILD
# define DEBUG(x) fprintf(stderr, x)
#else
# define DEBUG(x) do {} while (0)
#endif
C++のアナログは:-になるんでしょうかね。
#ifdef DEBUG_BUILD
# define DEBUG(x) cerr << x
#else
# define DEBUG(x) do {} while (0)
#endif
- 2番目のコードスニペットは、C言語のものと類似していますか?
- お気に入りの C++ デバッグ マクロはありますか?
EDIT 。 Debug Macros" とは、デバッグモードでプログラムを実行しているときに便利なマクロを意味します"。
どのように解決するのですか?
2番目のコードスニペットは、C言語のものと類似していますか?
多かれ少なかれ。より強力です。
<<
-その一方で、人々が引数にセミコロンを含めることによってそれを悪用する可能性がわずかにあります。あるいは、呼び出しの後のセミコロンを忘れたことによるミスに遭遇することもある。だから、私はこれをdoブロックに含めることにします。
#define DEBUG(x) do { std::cerr << x; } while (0)
お気に入りのC++デバッグマクロはありますか?
私は上のものが好きで、よく使います。私の no-op は通常、次のように読み取ります。
#define DEBUG(x)
であり、最適化コンパイラでも同じ効果がある。ただし、以下の @Tony D のコメントは正しいです: これはいくつかの構文エラーを検出できないままにします。
私は時々、実行時のチェックも含めて、ある種のデバッグ フラグを提供します。Tony D が私に思い出させたように、そこに endl があることは、しばしば有用です。
#define DEBUG(x) do { \
if (debugging_enabled) { std::cerr << x << std::endl; } \
} while (0)
また、式を表示したいこともあります。
#define DEBUG2(x) do { std::cerr << #x << ": " << x << std::endl; } while (0)
いくつかのマクロでは、私は
__FILE__
,
__LINE__
または
__func__
などがありますが、これらはアサーションであることが多く、単純なデバッグマクロではありません。
関連
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Wi-Fi経由でAndroidアプリケーションを実行/インストール/デバッグしますか?
-
[解決済み] マクロで無意味なdo-while文やif-else文を使っているのはなぜですか?
-
[解決済み] スタックトレースとは何ですか、またアプリケーションのエラーをデバッグするためにスタックトレースをどのように使用できますか?
-
[解決済み] CMakeにおけるデバッグとリリースの比較
-
[解決済み] #if DEBUG vs. Conditional("DEBUG")
-
[解決済み】C言語でデバッグ印刷を行うための#defineマクロ?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み】C言語でデバッグ印刷を行うための#defineマクロ?