[解決済み] #ifdef DEBUG 対 #if DEBUG
2022-02-13 14:57:52
質問
コンパイラディレクティブを使用する際、以下の2つのコードスニペットのうちどちらが正しいか/好ましいか、またその理由は不明です。私が見たところ、ほとんどの開発者やオープンソースプロジェクトは前者を使用しているようですが、後者も頻繁に使用されているのを見かけました。
#ifdef DEBUG
[self doSomethingOnlyWhenDebugging];
#endif
ヴァーサス
#if DEBUG
[self doSomethingOnlyWhenDebugging];
#endif
デバッグ中のみコードを実行する場合、上記のコードスニペットのうちどちらが好ましいですか?私の推測では、最初のものはDEBUGがTRUEまたはFALSEに定義されている場合に実行され、2番目のものはDEBUGが定義されTRUEに設定されている場合にのみ実行されると思われます。これは正しいですか?
どのように解決するのですか?
ご指摘の通りです。
#if DEBUG
は評価されません。
DEBUG
は以下のように定義されます。
0
.
それぞれをどのように使うかですが、基本的には
#ifdef
のみを必要とするものには
加える
コードで、デバッグログの追加など、プリプロセッサの定義が存在する場合に使用します。もし、値を検査して、異なるコンパイル経路をたどる必要があるなら、私なら
0
または
1
. その良い例が
TARGET_IPHONE_SIMULATOR
はiOSプロジェクトでは常に定義されていますが、唯一
1
は、シミュレータ用にコンパイルしている場合です。
関連
-
[解決済み】Cocoapodsをインストールできない - プロジェクト・ディレクトリにポッドファイルが見つからない
-
[解決済み] Xcode コマンド /usr/bin/codesign は終了コード 1 で失敗しました : errSecInternalComponent
-
[解決済み] Xcodeエラー "Could not find Developer Disk Image" が発生する。
-
[解決済み] 警告: 'characters' は非推奨です。String または Substring を直接使用してください。
-
[解決済み] CFNetwork SSLHandshakeに失敗しました(-9824) NSURLSession/NSURLConnection HTTPのロードに失敗しました(kCFStreamErrorDomainSSL, -9824)
-
[解決済み] Int 型のインデックスを持つ [AnyObject]? の値を添え字として使用できません。
-
[解決済み] Info.plist ユーティリティのエラーです。"そのようなファイルがないため、Info.plistを開くことができませんでした"
-
[解決済み] データソースからのセルの取得に失敗しました。
-
[解決済み] 新しいアウトレット接続を挿入できませんでした。という名前のクラスの情報が見つかりませんでした。
-
[解決済み] プリプロセッサー・マクロがない場合、Xcodeプロジェクトでプロジェクト・レベルで実用的なスキーム固有のフラグを定義する方法はありますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リンカーコマンドが終了コード1で失敗(起動を確認するには-vを使用)、Xcode 8、Swift 3
-
[解決済み] シミュレータへのサービス接続の開始に失敗しました Xcode
-
[解決済み] キャッチできない例外 'NSInvalidArgumentException', reason: '-[_.AppDelegate add:]: unrecognized selector' により、アプリを終了する。
-
[解決済み] UICollectionView: 非Nilのレイアウトパラメータで初期化する必要があります。
-
[解決済み] MacOSとXcodeをアップデートすると、Xcode 8.1の「No matching provisioning profiles found」が表示される。
-
[解決済み] Objective-C ブロックパラメータ 発行 このブロック宣言はプロトタイプではありません
-
[解決済み] selector' の引数が '@objc' メソッド、プロパティ、またはイニシャライザを参照していない
-
[解決済み] iOS 9 : ユニバーサルアプリの警告「アプリがフルスクリーンを必要としない限り、すべてのインターフェイスの向きをサポートする必要があります」。
-
[解決済み] Xcode 6: iOS 8.1 The Developer Disk Imageをマウントできませんでした。
-
[解決済み] ナビゲーションアイテムのタイトルカラーを変更する方法