<p>「ある条件下では特定のコード群は処理に加わらせない」といった場合、方法の1つとしてプリプロセッサにマクロを指定するやり方が挙げられます。</p><!–more–><p>Xcodeで行う場合、プロジェクト設定にある項目「プリプロセッサマクロ」で指定します。(実際に探す際は、同ウィンドウ内にある検索バーに「プリプロセス」などと入れて検索することをお勧めします。)</p><blockquote>Xcodeメニューのプロジェクト > プロジェクト設定を変更 > GCC 4.2 - プリプロセスのプリプロセッサマクロ</blockquote><p>[caption id="attachment_3775" align="aligncenter" width="464" caption="GCC 4.2 - プリプロセス"]<a rel="attachment wp-att-3775" href="https://hiroakit.com/archives/3772/figure1"><img class="size-full wp-image-3775 " title="GCC 4.2 - プリプロセス" src="" alt="" width="464" height="419"></a>[/caption]</p><h3>プロジェクトの項目「プリプロセッサマクロ」を設定</h3><p>例えば、下のコードのようにDebugしているときにNSLogを出力するマクロ"DEBUG" があるとき、ビルド構成Debugのプリプロセッサマクロに DEBUG = 1 と入力します。(上図参照)</p><pre>#ifdef DEBUG NSLog(@"ビルド構成:デバッグ");#endif</pre><p>以上で設定は完了です。</p><h3>サンプルコードとその結果</h3><p>以下のコードは、上述した内容でプリプロセッサマクロが動作しているのか確認するために用意した簡易的なものです。</p><pre>#import <Foundation/Foundation.h>int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];#ifdef DEBUG NSLog(@"ビルド構成:デバッグ"); NSLog(@"%d 行目",__LINE__); / 行数を表示 NSLog(@"%s メソッド",__FUNCTION__); / メソッド名を表示 NSLog(@"%s に記述あり",__FILE__); // ファイル名(フルパス)を表示#else if NSLog(@"ビルド構成:リリース");#endif [pool drain]; return 0;}</pre><ul> <li>ビルド構成をDebugにしたときのコンソールの出力結果</li><blockquote>ビルド構成:デバッグ13 行目main メソッド/Users/hiroaki/develop/Macro/Macro.m に記述あり</blockquote> <li>ビルド構成をReleaseにしたときのコンソールの出力結果</li><blockquote>ビルド構成:リリース</blockquote></ul>
Xcodeのプリプロセッサマクロ
January 8, 2011
カテゴリ
タグ
- .NET (5)
- AAD (1)
- AfterEffects (1)
- Apache (1)
- Apple (1)
- Authenticator (1)
- Autodesk (3)
- aws (1)
- Azure (3)
- AzureFunctions (2)
- Blender (9)
- C (3)
- C++ (2)
- cyberduck (1)
- Dev Container (1)
- Docker (1)
- Emacs (10)
- FBX (1)
- Fire TV (1)
- Forge (1)
- Git (1)
- Go (3)
- Google (1)
- GPG (2)
- HoloLens (5)
- HoloLens2 (1)
- Houdini (1)
- HTML (1)
- Hugo (4)
- ime (1)
- iOS (4)
- ITS (2)
- javascript (4)
- Kaleidoscope (1)
- launchd (1)
- Linux (17)
- Liquid (4)
- LSP (1)
- macOS (42)
- Maya (13)
- MRTK (4)
- MySQL (3)
- Netlify (1)
- OpenGL (2)
- Org-Mode (4)
- Parallels (1)
- PGP (1)
- Programming (3)
- ProtocolBuffer (1)
- Python (3)
- R (3)
- Redmine (2)
- RenderMan (5)
- Ruby on Rails (2)
- rx (1)
- RxSwift (1)
- s3 (1)
- Sourcetrail (1)
- Subversion (1)
- Swift (7)
- Ubuntu (26)
- Unity (8)
- UnityHub (2)
- USD (6)
- UWP (1)
- VFX (8)
- Viewer3D.js (1)
- Visualization (1)
- VisualStudio (5)
- VSCode (3)
- VSIX (1)
- Web (9)
- Webビュー (1)
- Windows (11)
- WordPress (1)
- Xcode (12)
- オブジェクト指向 (3)
- おもちゃ (1)
- デザインパターン (3)
- マグカップ (1)
- 作品集 (1)
- 修理 (1)
- 健康 (2)
- 子ども (1)
- 思い出 (1)
- 映画 (2)
- 環境構築 (1)
- 統計学 (3)
- 認証 (1)
- 読書 (1)
- 過去記事インポート (281)
- 配線 (2)
- 開発環境 (10)