プロが教えるわが家の防犯対策術!

Q1)『#define _DEBUG 0』としても、#elsew側の命令が有効になりません。
#elsew側の命令を有効にする、方法があればお教え頂けますと大変有難いです。

#define _DEBUG 0
#ifdef _DEBUG
#pragma comment(lib, "opencv_world455d.lib") //<--選択される
#else
#pragma comment(lib, "opencv_world455.lib") //<--選択される
#endif

以上、宜しくお願いします。

A 回答 (3件)

いつものように、マルチっているんでしょうけど……


https://detail.chiebukuro.yahoo.co.jp/qa/questio …

#ifdef疑似命令はシンボルの有無を確認します。
#define _DEBUG
だけでも、シンボルの定義はされているので、真となります。

#define _DEBUG 0
で切り替えたいなら
#if『def』ではなく、#ifの方を使用するべきでしょう。

まぉ、そうした場合にVisual StudioでReleaseビルドしたときにどうなるか?という問題はありますが。
コード中で明示的に#defineしていないとシンボルが無いとしてビルドエラーになるかも知れませんな。
    • good
    • 0
この回答へのお礼

お世話になります。
>#define _DEBUG
だけでも、シンボルの定義はされているので、真となります。
#define _DEBUG 0
で切り替えたいなら
#if『def』ではなく、#ifの方を使用するべきでしょう。
<ーー了解です

お礼日時:2022/01/06 21:48

>『#define _DEBUG 0』としても、#elsew側の命令が有効になりません。


#define _DEBUG 0
でなく
#undef _DEBUG
にしたら?
    • good
    • 1

#ifdef の意味はわかってる?



なお C の規格上プリプロセッサにおいて「未定義シンボル」は 0 に評価されるらしい>#1.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!