2010-11-30 5 views
8

私はObjective-CがCプログラミング言語の「厳密なスーパーセット」であるとよく聞きます。 Cのいくつかの方言/標準があります(すなわち、K & R、ANSI C、C90、C99、GNU拡張...)。 Objective-Cは1980年代初頭に最初に開発されたので、これらの基準よりも前のものでなければなりません。しかし、Objective-C 2.0は2006年または2007年頃からのものであるため、より現代的なC言語の方言に基づいている可能性があります。だから、 "C"はObjective-Cのスーパーセットですか?Cのどちらの方言がObjective-Cの「厳密なスーパーセット」ですか?

答えて

7

はあなたが本当に定義されていない探しているものC.

+0

+1は私よりも優れています:) –

+2

'@Chuck:' ...そしてCの*非標準*方言のいくつか! –

1

のすべての標準的な方言のためのObjective-Cの対応する「方言」があります。目的Cは、通常ANSI-C(C90と同じ)の厳密なスーパーセットと考えられています。しかし、Objective Cは標準化された言語やそのようなものではありません。それは基本的に「Take Cを使ってこれらの機能を追加する」というものです。したがって、使用している特定のコンパイラに依存します。

+0

Objective-Cコードをコンパイルするときに、XcodeがC99の厳密なエイリアシング規則をどのように処理するのか疑問に思う必要があります。 –

+0

@iPhone開発者:Xcodeは一度も使用していませんが、iircはGCCの形式に基づいています。そうであれば、Cの基礎となる目的C自体の基準のいずれかを支持すべきである。 –

+0

'@Billy ONeal:'確かに:http://lists.apple.com/archives/objc-language/2005/Aug/msg00050.html –

2

最も一般的に使用されるObjective-Cコンパイラ(GCCとClang)もCコンパイラであるとすれば、これらのコンパイラでサポートされているC言語をサポートしていると考えられます。 Appleのドキュメントには、具体的に述べ:

アップル コンパイラは、コンパイラ、GNUコンパイラコレクションの に基づいています。 Objective-C構文は GNU C/C++構文の上位セットで、Objective-C コンパイラはC、C++および Objective-Cソースコードで動作します。 は というファイル名拡張子.mでObjective-Cソースファイルを認識します。 は 標準C構文のみを含むファイルを 拡張子.cで認識します。同様に、コンパイラ は、 Objective-Cを拡張子.mmで使用するC++ファイルを認識します。 C++とObjective-Cの を使用して 他の問題は、だから、このケースでのObjective-Cは、単純にCまたはC++コンパイラによっていずれかの延長とみなされている

「のObjective-CとC++ の使用」で説明されていますあなたが基本言語として選択します。アップルから「Learning Objective-C」によると

+0

Xcode 4.4では、Cの方言はデフォルトで "GNU99"に設定されているようです。 – zoom23

0

「のObjective-CはCプログラミング言語のANSIバージョンのスーパーセットで、Cと同じ基本的な構文をサポートしています」

関連する問題