問題タブ [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 - bluegene/q の XLC コンパイラが「-qtm」をサポートしないのはなぜですか?
BlueGene/q の xlc コンパイラに問題があります。xlc コンパイラのバージョンは 12.1 です。
ドキュメント1によると、トランザクション メモリを有効にするために使用されるコンパイラ オプション「-qtm」をサポートする必要があります。ただし、常に次のエラー メッセージが表示されます。
どうすればそれを理解できますか?どんな助けでも大歓迎です。
aix - xlc を使用して AIX で ncurses を静的にリンクする方法
AIX 7.1 で ncurses ライブラリを使用して、AIX の標準である curses ライブラリに含まれていないパネルを使用しようとしています。ncurses ライブラリがインストールされています。xlc ngoodbye.c -lncurses 実際の ncurses ライブラリは libncurses.a で、静的ライブラリであると理解しています。ただし、実行可能ファイルを別の AIX ホストに移動して実行すると、「依存モジュール libncurses.a(libncurses.so.5) をロードできませんでした」というメッセージが表示されます。モジュール libncurses.a(libncurses.so.5) をロードできませんでした。システム エラー: そのようなファイルまたはディレクトリはありません。
ncurses ライブラリがインストールされていない他のホストでプログラムが実行されるように、ncurses ライブラリをリンクするにはどうすればよいですか? gcc ではなく、AIX で xlc を使用していることに注意してください。-bstatic を試しましたが、コンパイル時にリンク エラーが発生します。私は開発者ではないため、この分野での経験は限られていることに注意してください。ありがとう。
c - IBM XL C コンパイラ - システム インクルードではなくユーザー インクルードを展開する方法
すべての IBM マニュアルを検索しましたが、驚くべきことに答えが見つかりません。私は次のものを持っています:
コンパイル オプションがあります。デフォルトは NOSHOWINC です。これを SHOWINC に変更して再コンパイルすると、上記の 4 つのインクルードすべてからすべてが展開されます。ユーザーインクルードのみを展開したい..
これまでのところ、これを行うためのオプションは見つかりませんでした。これは、z/OS 上で稼働する IBM XL C コンパイラーです。
c++ - 非標準の C++ を移植可能に認識しますか?
Cにはあります__STDC__
が、一部の拡張 C++ 方言を認識する標準的な方法はないようです。したがって、私が使用するポータブルコードの場合
これは、これまでのところ gcc、XLC、および Visual C++ で機能します。
ISO/ANSI 準拠をコンパイラごとに個別にテストする必要がありますよね? もしそうなら、動作することが証明されている他のコンパイラについて提案できますか?
編集: このようなテストの賛否については非常に多くの議論があったため、ここに実際の例を示します。複数のプロジェクトの複数のコンパイラで広く使用されているヘッダーstuff.hがあるとします。stuff.hは、いくつかのコンパイラ固有vsnprintf
(C++11 より前に標準化されていない)、いくつかcopy_if<>
( C++98 ではなぜか見逃していた)、独自のミューテックス ガードなどを使用します。クリーンな C++11 バリアントを実装する際に、古い (ただし信頼できる) 実装をいくつか#if __is_extended
(より良い:__is_idosyncratic
または!__is_ANSI_C11
) でラップします。新しい C++11 は#else
. まだ C++0x または C++98 としてコンパイルされる翻訳単位にstuff.hが含まれている場合何も変わっていません。コンパイル エラーはなく、実行時の動作も異なりません。C++11 は実験的なままです。コードはメイン ブランチに安全にコミットでき、同僚はそれを研究し、そこから学び、コンポーネントに技術を適用できます。
c++ - Xerces。DOMElement への動的キャスト DOMNode ポインタは nullptr を返します
良い一日。問題は次のとおりです。次のコードを使用して解析しようとする有効な *.xml ファイルがあります。
最初の「equals」チェックで SIGILL を使用して実行中にプログラムがクラッシュします。デバッグは、動的キャストの後、currentElement が実際にはヌル ポインターであることを示しました。ここで何が問題になる可能性がありますか?
xlc++、Xerces ライブラリ 2.5、AIX 7 でコンパイル。
PS 同じコードが Windows でも正常に動作するようです。
更新: dynamic_cast を static_cast に変更すると、コードがエラーなしで実行されました。しかし、それはいくつかの疑問を未解決のままにしました。
1) Windows では dynamic_cast を使用しているのに、Unix では使用していないときにコードがエラーなしで実行されたのはなぜですか? コンパイラまたはライブラリのバージョンの問題でしょうか?
2) この場合、キャストするためのより良い/よりクリーンな方法はありますか?
c++ - Xlc_r IBM コンパイラーでコンパイルすると、テキスト「<」が予期しないものになる
AIX OS で xlC_r コンパイラーを使用したコードのコンパイルに問題があります。問題の原因となっているコードを以下に添付しました。MS Windows で Microsoft コンパイラを使用してコードをコンパイルしようとしましたが、Linux で gcc を使用してコンパイルしたところ、すべて正常に動作しました。私が得るコンパイラエラーは次のとおりです。
"...../ABC.h", line 12.22: 1540-0063 (S) テキスト "<" は予期しないものです。
インターネットを検索したところ、いくつかのリソース (リンクとリンク) が見つかりましたが、ソリューションをコードに統合する方法がわかりません。考えられる解決策の 1 つは、shared_ptr を削除してポインター値だけを取得することですが、ポインターの削除を自分で管理するのは好きではありません。助けていただければ幸いです。
ABC.h
ABC.cpp
前もって感謝します。