問題タブ [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.
makefile - Clang++ -c はファイルを間違ったディレクトリに出力します
次の手順を含むこのメイクファイル ターゲットがあります。
何らかの理由で、Clang はビルド ファイルをBASE_DIR
ではなくに出力しますGRAPHICS_BUILD_DIR
。すべてが正常にコンパイルされ、一度に 1 行ずつ手動で実行すると正常に動作し、*.o
ファイルは正しいディレクトリに出力されます。
make がこれらのファイルを正しいディレクトリに置かないのはなぜですか? どうすれば強制的に入れられますか?
私はclang3.1とubuntu Linuxカーネル3.2.0-26でGNUMakeの現在のバージョンを使用しています。
objective-c - Objective-Cでgccの代わりにclangを実行するようにTextMateを構成します
最新のTextMate1.5(OSX Lion上)を実行していて、最新のXCode4.3がインストールされています。私は、Objective-Cを学習するときに、XCodeをバイパスして開始し、TextMateとコマンドラインを使用して単純なサンプルと演習を行うことで、ちょっとした道を進んでいます。TextMate(コンソール)でCmd-Rを押すと、タイプされたObjective-Cコンソールプログラムがビルドされて実行されます。ただし、コマンドラインからclangを使用してコンパイルすると正常に機能するため、(私のPOVから)コンパイルする必要があるものはコンパイルされません。コマンドラインからビルドに切り替えると、clangの代わりにgccを使用すると、同じことが失敗することがわかります。
私の質問は、Objective-C(.m)ソースファイルのCmd-Rを押したときに、TextMateにgccの代わりにclangを使用するように説得するにはどうすればよいですか?
(私はバンドル設定をくぐり抜けましたが、役に立たなかったり、グーグルで検索したりしました。それで、私が行方不明になっている単純なものか、誰もそのように行きたがらなかったに違いありません。私は最初のものを想定しています。)
PS私は数週間前にWindowsから変換したので、私がMacのエキスパートユーザーであると思い込まないでください。
ios - 「clang が予期せず終了しました」(xcode クラッシュ)
コードを分析しようとすると ([製品] -> [分析])、xcode がクラッシュし、「clang が予期せず終了しました」というタイトルが表示されます。
プロセス: clang [10074] パス: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 識別子: clang バージョン: 3.1 (318.0.61) コード タイプ: X86-64 (ネイティブ)親プロセス: clang [10073]
日時: 2012-07-13 18:46:29.862 +0100 OS バージョン: Mac OS X 10.7.4 (11E53) レポート バージョン: 9
前回のレポート以降の間隔: 140604 秒 前回のレポート以降のクラッシュ: 50 前回のレポート以降のアプリごとのクラッシュ: 39 匿名 UUID: E974A614-4831-478E-8B68-8FE005A98F19
クラッシュしたスレッド: 0 ディスパッチ キュー: com.apple.main-thread
例外の種類: EXC_BAD_ACCESS (SIGSEGV) 例外コード: 0x0000000000000000 の KERN_INVALID_ADDRESS
0 に近い VM リージョン: --> __TEXT 000000010180f000-00000001029c8000 [ 17.7M] rx/rwx SM=COW /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 clang 0x00000001018dc780 clang::Stmt::getSourceRange() const + 16 1 clang 0x00000001021ce0c6 _ZL22getValidSourceLocationPKN5clang4StmtEN4llvm12PointerUnionIPKNS_15LocationContextEPNS_19AnalysisDeclContextEEE + 86 2 clang 0x00000001021ce5d3 clang::ento::PathDiagnosticLocation::genLocation( clang::SourceLocation, llvm::PointerUnion) const + 35
私のゲストはLLVMだからですか?私はApple LLVMコンパイラ3.1を持っています
ありがとう!
編集: Xcode バージョン 4.3.3 (4E3002)
objective-c - -O0 でない場合、ObjC / Clang の最適化ケーシング クラッシュ
ではどのような最適化がclang
行われ-O1
ますか? 明らかに最適化が実行されるとすぐに、デバッグしようとしているコードが失敗します。-O1
1 つずつ試すことができるフラグのコレクションですか?
objective-c - 静的分析と「ルールの作成」
NSBezierPath にカテゴリを追加して、パスの CGPathRef を返したいと考えています。これはコア基盤オブジェクトであるため、自動解放することはできず、メソッドの呼び出し元が解放する必要があります。メソッド名の一部として「コピー」または「作成」を配置することで、Apple が設定した規則に従っていると思います: https://developer.apple.com/library/mac/#documentation/CoreFOundation/Conceptual/ CFMemoryMgmt/Concepts/Ownership.html
ただし、静的アナライザーは、さらに先に進み、名前の一部として create/copy を含めるだけでなく、実際にメソッド名を「copy」(または mutableCopy など) で開始しない限り、それを受け入れません。
ただし、名前の競合を避けるために接頭辞を付ける必要があるため、これはカテゴリ メソッドの名前付けのベスト プラクティスに違反しています。
次のすべてを達成するための最良の方法は何ですか?
- Cocoa クラスのカテゴリにメソッドを追加する
- … Core Foundation オブジェクトを返す
- … アナライザーで警告が表示されません
- …ベストプラクティスに従って名前が付けられていますか?
c - コンパイラが同じメモリ位置に同じものを何度も書き込むコードを生成するのはなぜですか?
clang
とを使用して次のコードをコンパイルし、gcc
両方を次のように呼び出しました-O3
。
生成される主な関数は次のgcc
とおりです(最後にNOPはありません)。
そして、これがからのものですclang
:
私の質問は次のとおりです。両方がスタックに静的文字列のアドレスを何度も書き込むコードを生成する理由はありますか?たとえば、clang
生成されるコードが代わりにこのように表示されないのはなぜですか?
cuda - clang で CUDA をコンパイルする
私はLLVMが初めてです。clang は CUDA に対応していると聞きました。clang を使用して CUDA をコンパイルするにはどうすればよいですか? 構成を変更したり、特定のヘッダー ファイルを含めたりする必要はありますか? これに関する情報は、ウェブ上で見つけることができませんでした。それはまったく可能ですか?
今、clangを使ってダミーのcudaプログラムをコンパイルしようとすると
次のエラーが表示されます
どんな助けでも大歓迎です!ところで、私はMacで実行しています。
xcode - GCCとLLVMを使用したC ++でのXcode 4.4 Lionの一貫性のない改行動作
私は何年もの間、次のコードを使用して、cin up から次の改行を含む文字を消費してきました。
次のように、例外をキャッチして cin 状態をクリアした後にこれを呼び出します。
cin からの次の読み取りでは、残りの改行が空白としてスキップされます。
Lion の下で Xcode 4.4.1 に変更したところです。LLVM GCC 4.2 GNU++98、libstdc++ (GNU C++ 標準ライブラリ) を使用すると、これまでと同じように動作します。
しかし、Apple LLVM Compiler 4.0、c++11、libc++ (C++11 をサポートする LLVM C++ 標準ライブラリ) を使用すると、改行の認識に複数の問題があるようです。上記と同じコードでは、ループを満たすために 2 回目のリターン キーストロークが必要です。別の方法でも同じ問題が発生します。
最後に、while ループで cin.get() の代わりに getchar を使用すると、いつものように機能します。
これは libc++ のバグですか? または、Xcode または C++11 で何かを見逃していませんか?
Howard Hinnant への返答として、例外なく何が起こるかを示す小さなテスト ケースを以下に示します。
}
3が保存されるまでintを読み取って保存し、その後、次の改行まで読み取って破棄し、すべてを繰り返すため、3の後のものが入力ストリームから破棄されることがわかります。GNU++98 を使用する Xcode 4.4.1 Lion を使用 || GNU++ 11、libstd ++、次の 2 行を入力すると、それぞれがスペースで終わり、その後に RETURN キーストロークが続くと、期待どおりの結果が得られます。
Xcode の出力ウィンドウが表示されます。
しかし、C++11 の libc++ では、両方の行を入力した後、2 回目の RETURN キーストロークを入力するまで最初の行では何も起こりませんが、適切な破棄はまだ行われています。したがって、各入力行の後の余分なスペースは、2 番目のキーストロークのように見えます。
cin.get() の while ループの代わりに上記の cin.ignore 呼び出しを使用すると、まったく同じ動作が発生します。問題は、「なぜ 2 回目の RETURN キーストロークが必要なのか」ということです。
cygwin - Windows での speak.js コンパイルの問題
コンパイルしようとすると、この問題が発生しますspeak.js
。emscripten.sh
コンパイラがこの行に到達したとき:
このエラーが発生します (前の部分は正常に動作します):
Windows 7 で cygwin を実行しています。emscripten の健全性チェックはすべて正常に機能し、emscripten /tmp config (ホーム フォルダー内の .escripten) をいくつかの値に変更したり、アクセス許可を付与したりしてみました。一時ファイルが作成されていないようで、再度アクセスしようとすると、壊れます。
ヘルプ/ガイダンス/提案は大歓迎です。