質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Q&A

解決済

2回答

1332閲覧

Objective-cにphpのdefined()のようなモノはありますか。

tatsuakiaki

総合スコア11

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

0グッド

0クリップ

投稿2015/07/17 11:09

Objective-cにphpのdefined()のようなモノは存在しますか。
#ifdefの様なマクロでなく、条件分岐の中で参照したいのですが、
extern const BOOLで定義されていない定数を参照するとエラーになりますでしょうか。
また、エラーにならなければ、BOOL型の場合どの様な値が取れるでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

求めている答えとは異なる話になるかもしれませんが、
インタプリタ言語とコンパイラ言語の特性の違いなので、コンパイラ言語ではご質問の機能は望むべくもない。というのが回答になるかと思います。

その理由ですが、
インタプリタは実行時に定義を含めた評価を行う形になりますが、コンパイラは実行用のコードを生成する段階で定義の評価が行われてしまいます。コンパイラの場合、実行前にすでに定義が存在しない為にエラー扱いとなって実行コードの生成が途中で停止してしまうので、処理の都合上不可能。という結果になります。

投稿2015/07/17 14:03

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatsuakiaki

2015/07/17 15:00

>>インタプリタ言語とコンパイラ言語の特性の違い おっしゃるとおりかもしれません。 設計から見直します、有難うございました。
退会済みユーザー

退会済みユーザー

2015/07/17 15:08 編集

こちらこそ適当な代替案を示せるほど長けておらず、通り一遍の回答になってしまいました。 申し訳ありません。
guest

0

ベストアンサー

Objective-CにPHPのdefined()はありません。

Objective-Cのコードは、定義(.h)と実装(.m)に分かれます。
定義されていないシンボルを使用すると、コンパイルエラーになります。
定義されていて、実装されていないシンボルを使用すると、リンカーエラーになります。

投稿2015/07/17 13:20

Stripe

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatsuakiaki

2015/07/17 13:37 編集

ご回答有難うございます。説明が足らず申し訳ございません。 定義する際は定義(.h)と実装(.m)に各記載いたします。 今質問の意図は 1. 共有ライブラリを使用 2. 各アプリ内に設定ファイルを設けており、そこにBOOL型の定数(フラグ)を定義(したい) 変更対象が多くならないよう、trueのアプリのみ定義し、対象外のアプリは未定義に(したい) 3. 2のフラグを共有ライブラリ内の処理で参照し、共有ライブラリ内の処理内でフラグがあれば変化を入れたい のです。 上記で定義していないアプリで共有ライブラリ内の定数取得処理時、エラーになりますでしょうか。そもそものコンパイルエラーになりますでしょうか。 ご存知でしたら宜しくお願いたします。
Stripe

2015/07/17 13:39

BOOL型の定数は、設定ファイル内に定義するんですか? それで、その設定ファイルの内容はどのように参照するんですか?
tatsuakiaki

2015/07/17 13:48

>>設定ファイル内 ライブラリ利用するアプリ側(のプロジェクトの定義値をまとめたclass内)でextern const定義します。 >>それで、その設定ファイルの内容はどのように参照するんですか? プロジェクト内に取り組む、共有ライブラリ内のソースでそのまま値を参照し取得します
Stripe

2015/07/17 14:14

つまり、その設定ファイルというのは、.hファイルで、#includeして使うんですか?
tatsuakiaki

2015/07/17 14:51

>>.hファイルで、#includeして使うんですか? はい、そうです。
Stripe

2015/07/17 14:58

それなら、話は最初に戻ります。 「定義されていないシンボルを使用すると、コンパイルエラーになります。」
tatsuakiaki

2015/07/17 15:02

>>「定義されていないシンボルを使用すると、コンパイルエラーになります。」 納得しました、ありがとうございます! 手元に開発環境が無く、そういえば。。な感じで質問致しました。 長々とご回答有難うございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問