問題タブ [llvm-clang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
7288 参照

xcode - Xcodeの新しいプロジェクトでLLVM+Clangを有効にすると、リンクエラーが発生します

XCodeの完全なクリーンアンインストールを実行し、設定を削除し、完全な/ Developerフォルダーを削除して、XCodeを再インストールしました。

新しいCocoaアプリケーションを作成し、Targetに移動して、ターゲットで「Get info」を実行し、「C / C++コンパイラバージョン」から「LLVMcompiler1.0.2」を有効にして、Buildを押します。

私は得る:

ここで私を助けることができる人はいますか?LLVM + GCCフロントエンドは機能しますが、私は本当にClang(LLVMコンパイラ1.0.2)を使用したいと思います。新しいXCodeのインストール、新しいCocoaプロジェクトにはまだこの問題があります。

0 投票する
3 に答える
1394 参照

objective-c - コア データ、プロトコル、readwrite と readonly のプロパティ宣言の違い

Core Data、宣言されたプロトコル、およびおそらく LLVM 1.5 コンパイラに関連する奇妙な癖に遭遇しています。これが状況です。

IPContainer が IPEvent の親エンティティである IPContainer と IPEvent の 2 つのクラスを持つ Core Data モデルがあります。各エンティティには、mogenerator を使用して作成されたプロジェクト内のカスタム クラスがあります。mogenerator は、モデル化されたプロパティ宣言だけを含む追加のサブクラスを生成するため、実際のクラス階層は IPEvent > _IPEvent > IPContainer > _IPContainer > NSManagedObject です。IPContainer エンティティには、@property(nonatomic, retain) NSNumber* id;_IPContainer.h で宣言されている「id」という名前の属性があります。_IPContainer.m は@dynamic id;実装にあり、コア データに実行時にアクセサーを生成するように指示します。

また、プロジェクトで宣言されたプロトコル IPGridViewGroup があり、いくつかのプロパティを定義します。そのうちの 1 つは同じ「id」プロパティです。ただし、このプロトコルを実装するクラスにはセッターは必要ないため、プロトコル内のプロパティは次のように宣言され@property(readonly) NSNumber* id; ます。 IPEvent クラスは、IPGridViewGroup プロトコルに準拠していることを宣言します。

これは、Clang/LLVM 1.0.x コンパイラ (Xcode 3.2.2 に同梱されているバージョン) を使用すると問題なく動作しましたが、Xcode 3.2.3 と Clang/LLVM 1.5 にアップグレードすると、さまざまなことが変わりました。まず、IPEvent クラスのコンパイル時に次の警告が表示されます。

次に、実際にプログラムを実行すると、コンソールに次のように出力されます。

すぐに続きます:

また、IPEvent クラスでプロパティを再宣言しようとしましたが、別のコンパイラ警告が表示され、実行時に同じ動作が発生しました。

ここで変更されたのはコンパイラだけなので、変更のきっかけは明らかですが、これが新しいバージョンのコンパイラのバグと見なされるのか、それとも古いバージョンのコンパイラは実際には正しく動作していませんでしたが、新しいバージョンでは、バグがあるのは自分のコードであることが明らかになりました。

だから私がここに持っている質問の中には次のものがあります:

  1. クラスが読み取り専用プロパティを持つプロトコルに準拠していても問題ないように思われますが、独自の実装でプロパティに読み取り書き込みアクセスを提供しますが、それは正しいですか? ただし、ここでの癖は、 readwrite プロパティが実際には、プロトコルに準拠するクラスのスーパークラスで宣言されていることです。
  2. コンソール メッセージが Core Data の内部のどこかに出力されていると想定しています。ただし、IPGridViewGroup プロトコルに準拠する場合を除き、IPEvent 自体は「id」プロパティを明示的に宣言しないため、これは奇妙です。ただし、この場合、コンパイラエラーが発生すると思います。これは、AFAIKが通常許可されていない同じプロパティの読み取り専用バージョンで読み取り書き込みプロパティ(_IPContainerスーパークラスで宣言されている)を効果的にオーバーライドするためです。.
  3. これがコンパイラのバグであれば問題ありません。今のところ、いくつかの異なる方法で回避できます。ただし、コンパイラがここで正しいことを行っている場合、コンパイラの警告や実行時エラーが発生しないように、これらすべてを整理する方法を考え出すのに途方に暮れています。

編集:回避策は、IPEvent クラスでプロパティを再度宣言することですが、コンパイラの 2 つのバージョンの動作が異なる理由についてはまだ戸惑っています。また、プロトコルで宣言されたプロパティが、クラスで宣言されたプロパティとどのように相互作用するかについても不明です。

クラスで (プロトコルではなく) 読み取り専用プロパティを宣言し、読み取り書き込みプロパティをオーバーライドすると、「警告: プロパティ 'longitude' の属性 'readonly' は、'_IPEvent' から継承されたプロパティの属性 'readwrite' を制限します」というメッセージが表示されます。プロトコルで宣言しても同じ効果がある場合は、コンパイラから同様の警告が表示されるはずです。

ただし、直感的には、IPEvent はプロパティに必要なゲッターを既に実装しているため、たまたまプロパティのセッターも実装していたとしても、それは「プロトコルに準拠している」と見なされるはずです。

0 投票する
1 に答える
229 参照

xcode - Xcode 3 の clang のバージョンは?

Xcode が使用する clang のバージョンを特定するにはどうすればよいですか?

Xcode では 1.5 ですが、公式の llvm-clang は 2.7 です。彼らは同じですか?

0 投票する
4 に答える
3982 参照

objective-c - Objective-C のルート クラスを実装するには何が必要ですか?

私はこのコードを試しました:

フレームワークなしで LLVM/Clang を使用すると、次のエラーでコンパイルされません。

だから私は追加しましlibobjc.dylibた。コードはコンパイルされましたが、次の実行時例外がスローされました:

ルートクラスに必要な実装があることに気付きましたが、次に何をすればよいかわかりません。新しいルート クラスを作成するには何が必要ですか? また、これに関する仕様はありますか?

0 投票する
2 に答える
994 参照

c++ - Clangからの予期しない出力

私はclang-llvmをテストして、生徒がプログラムするマシンに追加するために学校のIT部門に言及する価値があるかどうかを確認しています。すべての割り当てで、を使用してコンパイルする必要があるg++ -Wall -W -pedantic-errors *.cppため、コマンドをに変換しましたclang++ -Wall -W -pedantic-errors。予期していなかった出力が得られました。

一方、GCCコンパイラはcatchブロック内の未使用の変数についてエラーを出しません。コマンドをg++と同様に保ちながら、Clangがtry / catchブロック内の未使用の変数について気が狂わないようにするためにできることはありますか?

Clang-LLVM(v2.7)GNU GCC(v4.4.4)Fedora 13

0 投票する
2 に答える
10083 参照

c++ - clang-llvm へのリンク

私は clang/llvm で小さなツールに取り組んできましたが、g++ と gnu のリンカを正常に取得して、clang に対してコードを適切にリンクすることができませんでした。

私のリンカーは次のエラーを生成しています:

私のコンパイルコマンドは次のようになります:

ヒントやアドバイスは大歓迎です。

乾杯、ct

PS: このページの情報を調べてみました。

http://ubuntuforums.org/showthread.php?t=532693

それはトリックを行うかもしれません、私ができるときにそのヒントにコメントを投稿します.

解決

このチュートリアルのclangコードを使用します(FileSystemOptionsへの参照を削除するために変更する必要がありましたb/c clang/Basic/FileSystemOptions.hはclang-2.8には存在しません):http://clangtutorial.codeplex.com/

うまくいったようです!

0 投票する
1 に答える
2420 参照

xcode - 「ユーザーヘッダーの検索パス」を使用して、Xcode にヘッダーを正しく検出させる方法は?

Xcode を使用して libFLAC からフレームワークを構築し、自分の Mac OS X アプリケーション内で使用しようとしています。

これらの FLAC ソースを使用します。

http://sourceforge.net/projects/flac/files/flac-src/flac-1.2.1-src/flac-1.2.1.tar.gz/download

これらのソース ファイルのいくつかだけが必要ですが、フレームワーク プロジェクトを自分のソースと共に配布したい場合にオリジナルの FLAC ソースを保持できるように、すべてをそのままにしておくことをお勧めします。

flac-1.2.1.tar.gz には、次のディレクトリが含まれています。

libFLAC をビルドするために、'flac-1.2.1/src/libFLAC' の .c ファイルをプロジェクトに (参照として) 追加しました。.h ファイルも追加しました。

ソース コードで使用されるヘッダーは、次の場所にあります。

たとえば、ヘッダーのソース コード呼び出しは次のとおりです。

Xcode では、これらの「ユーザー ヘッダー検索パス」をターゲットのビルド設定に追加しました。

そしてもちろん、flac-1.2.1 ディレクトリを適切な場所に配置しました。

コンパイルしようとすると、コンパイラがヘッダー ファイルを見つけられません。GCC 4.2 と LLVM コンパイラ 2.0 で試しました。私は何を間違っていますか?もっと何かするべきですか?

私は、それ以外はすべて ObjC のプロジェクトで C ソースをインポートすることに慣れていません。ただ、「できないならやるべきではない」という答えは避けてください。私はこれを学ぶ必要があり、そうするつもりです。

0 投票する
2 に答える
1316 参照

objective-c - -LLVMコンパイラ2.0のfobjc-nonfragile-abi2:引数がわかりませんか?

LLVMコンパイラ2.0を使用してXcodeでプロジェクトをビルドしようとしましたが、次のエラーが発生します。

私はLLVMコンパイラに精通していませんが、誰かが解決策を持っていますか?

私のコードにはその状況でエラーがあるため、引数を削除しても問題は解決しません。

0 投票する
1 に答える
879 参照

llvm - ClangでLLVM IRにコンパイルするときに構造体メンバー識別子を保持する方法は?

次の C 構造体定義があるとします。

上記の場合、Clang は次の LLVM IR を生成します。

...これには、変数 identifier を除くすべてが私の定義に含まれますstringVariable

アプリケーション (LLVM C++ API を使用) から名前で参照できるように、生成された LLVM IR に識別子をエクスポートする方法を見つけたいと思います。

annotate次のように、属性を追加しようとしました。

...しかし、注釈はうまくいかないようです (構造はまだ として定義されていますtype { i8* })。

何か案は?

0 投票する
1 に答える
1375 参照

llvm - clang-2.9 crt1 が見つからないというエラー

clang-2.9 リリースをコンパイルしたばかりで、Hello World の例をリンクできません。エラーがあります:

LLVM はデフォルト + として設定されています--enable-shared。同じオプションを使用した llvm-2.8 ビルドは、同じマシン上で正常に動作します。

同じエラーがここ にあった://permalink.gmane.org/gmane.comp.compilers.llvm.bugs/11352

llvm-2.8 と比較してわかること -- 新しいバージョンはファイル自体をアセンブルしようとしますが、古いバージョンは gcc を呼び出してアセンブルとリンクの手順を実行します。

LLVMのソースを編集できないため、これはclangリンカーの問題の複製ではないため、受け入れられた解決策は役に立ちません。