問題タブ [xlc]
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.
c++ - IBM XL C / C ++コンパイラー:プリプロセッサー・ディレクティブを使用してコンパイラー・モードを確認してください
test.cpp
AIXシステムでIBMxlCコンパイラーを使用してサンプルc++ファイルをコンパイルしようとしています。ファイルは、32ビットモードと64ビットモードの両方でコンパイルする必要があります。次のコマンドを使用して、両方のモードでコンパイルしています。
xlC test.cpp
(デフォルトのコンパイラモードは32ビットです)
xlC -q64 test.cpp
の下test.cpp
で、printf("Using 32-bit compiler")
32ビット用にコンパイルprintf("Using 64-bit compiler")
する場合と64ビット用にコンパイルする場合はそうする必要があります。
プリプロセッサの条件を使用してこれを実現するにはどうすればよいですか?違いを示すコンパイラまたはマシンアーキテクチャ用の事前定義されたマクロはありますか?
c++ - AIX の xlC に相当する CRTDBG_MAP_ALLOC
AIX xlC コンパイル済みオブジェクトでメモリ リークが発生しているかどうかを検出しようとしています。Visual Studio を使用する場合、CRTDBG_MAP_ALLOC を含めると、メモリ リークに関する情報が出力されます。xlC には、デバッグ時に使用するものと似たものがありますか?
c++ - 出力に関する gprof の問題
問題は、gprof の出力に "Index by function name" しか表示されないのはなぜですか?
このチュートリアルをサポートしてアプリケーションをコンパイルしました: http://ececmpsysweb.groups.et.byu.net/cmpsys.2004.winter/citizenship/Bryan_Wheeler/Profiling_Tutorial.html
したがって、私のアプリケーションは -p -pg でコンパイルされます
./application を使用してアプリケーションを実行すると、mon.out ファイルが作成されますが、これは関数名でのみインデックスを保持します。これはちょっと奇妙です。
誰かが同じ経験をしたか、ここで何が間違っているかを知っていますか。
ありがとう、アルカトロス
c++ - Altivec を使用した IBM xlC コンパイラーによるループの最適化
Power6 クラスターで Altivec 拡張機能をいじっていました。最適化を行わずに以下のコードをコンパイルすると、期待どおりにスピードアップが 4 であることに気付きました。しかし、-O3 フラグを付けて再度コンパイルしたところ、60 倍の高速化が実現しました。
誰かがこれについてもっと経験があり、コンパイラが私のコードをどのように再配置してそのようなスピードアップを実行しているかについての洞察を提供できるかどうか疑問に思っています. ここでのアセンブリと命令パイプラインによる唯一の可能な最適化ですか、それとも、今後の作業に含めることができる欠けているものが他にありますか?
c++ - obj.template operator()構文はxlC11.1では機能しません
次のC++コード:
IBMのxlC11.1でコンパイルすると、次のエラーメッセージが表示されます。1540-0063(S)テキスト「operator」は予期しないものです。演算子の代わりに関数を使用すると、正常に機能しますが、多くのライブラリコードを書き直したくありません。.template operator
コンストラクトをxlCで機能させる他の方法はありますか?
makefile - GNU make with xlc コンパイラ
ここで少しの洞察を期待しています。私は私たちのプロジェクトの 1 つのソース コードを持っていますが、コンパイル方法に関するドキュメントはなく、それを書いたすべての人が去ってしまいました :) 問題があり、ラッキー モイが調査を任されました。
現在、私はAIXでビルドしようとしていますが、メイクファイルはどちらかで不平を言い続けています
また
CPP オプションは xlc オプションのようで、ソフトウェアは以前に何度もコンパイルされています。makefile には、ウィンドウからの制御文字が含まれており、一部のエントリに対してタブがありますが、すべてのシェル コマンドに対してではありません。
コードで make を実行する際の問題について何か考えはありますか? まだ GNU make をインストールしていませんが、これで問題は解決しますか?
c - -bloadmapまたは-bnoquietオプションの使用方法は?
AIX 6.1でのCコンパイル中に、重複するシンボルに関する警告が表示され、次のように表示されます。
ld:0711-345 -bloadmapまたは-bnoquietオプションを使用して、詳細情報を取得します。
これらの使用方法をGoogleで調べましたが、明確な答えはまだありません。-bloadmapまたは-bnoquietを使用するために必要なことを誰かに教えてもらえますか?
助けてくれてありがとう ;-)
リントン
aix - -qnoweakexp を使用した AIX でのリンク
共有ライブラリーをリンクするために -qnoweakexp オプションを使用する利点と欠点は何ですか?
c - Unixコンパイラが緩すぎるのでしょうか、それともMSVC 2005にトリックが欠けているのでしょうか?
私はこのようないくつかのCコードで問題に遭遇しました:
Unixコンパイラー(GCCのさまざまなバージョン、およびAIXとHP-UXのコンパイラー)はすべて、に非常に満足していましたenum
。MSVC2005はエラーで異議を唱えましC2056: Illegal Expression
た。MSDNによると、これは「前のエラーのために式が無効だった」ためです。これが報告された唯一のエラーであり、少し驚くべきことです。
ただし、私の質問は次のとおりです。
- MSVC 2005は、C89標準を正確に解釈して許可してい
enum
ませんか? - Unixコンパイラは、警告なしにこれを許可するのに寛大すぎますか?
- C99(またはC2011)は何か違いがありますか?
- MSVCのより新しいバージョンはまだ反対してい
enum
ますか?
FWIW:許容できる解決策は、次のように変更することでしたenum
。
非推奨のオプションは面倒です
Michael Burrは、非常に価値のあるいくつかの追加情報を提供し、問題のロックを解除することができました。
コンパイル可能な例(実際の問題と同型):
MSVCの正確なバージョン(によって与えられるcl
)は次のとおりです。
それはマイケルがうまくいくと言っているバージョンです。
そして、私は自分の問題の原因を見つけました。(以下のコマンドラインは、プロジェクト固有のガフ(サンプルコードに必要のない多数の/Dおよび/Iオプション)をすべて削除します。)コンパイル:
そして、上記のコードは正常にコンパイルされます。
これにより、最初に警告が生成されます。
私は1年以上、非推奨のオプションを使用してコンパイルが行われることについて愚痴をこぼしてきましたが、このサブプロジェクトを担当するチームの誰も立ち上がって修正することをいとわなかったので、私はそうするべきではありません—変更されようとしている何か。
そしてそれは言う:
そのため、この/Zg
オプションは非推奨になるだけでなく、そもそも問題の原因にもなります。今、私は人々を追いかけるためのより良い弾薬を持っています!
マイケル、追加情報をありがとう。
PS:MSDNページに/Zg
は次のように書かれています。
このオプションを使用し、プログラムに、、、またはタイプ(またはそのようなタイプへのポインター)
/Zg
を持つ仮パラメーターが含まれているstruct
場合、各、、、またはタイプの宣言にはタグ(名前)が必要です。enum
union
struct
enum
union
それは完全に正確ではありません。サンプルフラグメントには正式なパラメータはなく、enum
値が関数に渡されることはありませんでした。ただし、にタグがない場合でも、フラグenum
とともにエラーが表示されます。/Zg
(いいえ。私はMSVC 2005に特に執着していません。私が働いているグループは、まだ最近のものにアップグレードされていません。ほとんどの場合、影響はありません。このように、非常に痛い場合があります。ある日、Windows上の他のビルドが受け入れているように見える理由を解明しenum
ます。この特定のサブ製品が他のすべてのものと一致せず、他の製品が使用するよりも古いコンパイラを使用していることに気付くのではないかと心配しています。 )。
これは厳密にはCコードです。MSVCタグは、Visual-C++タグの同義語です。