問題タブ [pragma]

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 投票する
2 に答える
5192 参照

c - 条件付き「pragma omp」

OpenMP を使用してさまざまな種類の並列化を試みています。その結果、コードにいくつかの行があり#pragma omp parallel for、それらを交互に (アン) コメントしています。これらの行を次のようなコードで条件付きにする方法はありますか?

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

c++-cli - コンパイラエラーC2158の最善の回避策:make_publicはネイティブテンプレートタイプをサポートしていません

A.dllがB.dllを参照する2つのc++/ cli dll(つまり、/ clrでコンパイルされたもの)があります。アセンブリBには、メソッドGetMgdClassBがあり、アセンブリAから呼び出したいと思います。アセンブリB(B.cpp)のコードは次のとおりです。

GetMgdClassBメソッドがstd::vectorをとることに注意してください。アセンブリAでは、次のコード(A.cpp)を使用してこのメ​​ソッドを呼び出そうとしています。

A.cppをコンパイルすると、次のエラーが発生します。

このプラグマを追加したかった理由は、ネイティブ型がデフォルトでアセンブリに対してプライベートであるためです。プラグマを削除すると、次のエラーが発生します(予想どおり)。

テンプレートのインスタンス化タイプstd::vector<B::NativeClassB *>はアセンブリ専用であるためです。

試みられた解決策

1. void *を使用し、タイプセーフティを解除します。

メソッドを変更して、GetMgdClassBを取得しvoid *、のアドレスをstd::vector<NativeClassB *>メソッドに渡します。でGetMgdClassB。その後static_cast、に渡すvoid *ことができstd::vector<NativeClassB *> *ます。もちろん、これは機能しますが、型の安全性を損ないます。

2. NativeClassBのマネージラッパーを作成し、マネージコンテナを渡します

マネージドクラスを作成します。たとえばref class NativeClassBWrapper、ネイティブのNativeClassBへの参照を保持することが唯一の目的であるとします。GetMgdClassBを変更して、NativeClassBWrappersの管理対象コンテナーを取得します(例List<NativeClassBWrapper ^> ^)。これには、GetMgdClassBを呼び出す前に新しいマネージドコンテナーを作成してデータを設定する必要があり、マネージドクラスB内で、ネイティブコンテナーに再パッケージ化する必要があるという欠点がありますstd::vector<NativeClassB *>(Bのコードはこのタイプを処理するため)。

現在、私はソリューション#1を採用する傾向にあります。これは、(a)パフォーマンスの問題が発生せず、(b)これを実行するのはごく一部の場合のみであるためです。型の安全性を失うのは好きではありませんが、ネイティブテンプレートのインスタンス化型を表示するコンパイラの機能が現在不足していることを考えると、それは正当なことのようです。

質問:

より良い回避策はありますか?

関連する質問:

C ++ CLIエラーC3767:候補関数にアクセスできません

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

xcode - GCC で「プロトコルを実装していません」という警告を抑制します

Xcode で iPhone アプリを開発しているときに、特定の警告を抑制したいと考えています。警告は次のとおりです。

私はディレクティブを使用することを理解しています:

しかし、xxxxxxxxxxxx がどうあるべきかわかりません。何か案は?

(仮定:これを行うには正当な理由があります。そうしないと、警告をエラーとして扱うオプションを有効にできないため、これを行う必要があります。)

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

c++ - カスタムの#warningフラグを作成する

私は商用アプリを構築しており、GPLコードを使用して支援しています。

コードをデバッグ用にビルドすると警告が表示されるように、#warningまたはステートメントを追加するにはどうすればよいですか?リリース用にビルドするとエラーがスローされますか?#error

できます:

ファイルの先頭にありますが、もっとうまくできますか?ファイルが含まれている場合、ファイルにタグを付けるためのより良い方法はありますか?

gccまたはclangでObjective-C++を使用しています。

0 投票する
7 に答える
61397 参照

c++ - #pragma warning push / popを使用して、警告レベルを一時的に変更する正しい方法ですか?

たまに、警告をまったく出さないC++コードを書くのは難しいです。ただし、警告を有効にすることをお勧めします。そのため、特定の構成に関する警告を無効にし、他のすべてのコードで有効にする必要がある場合がよくあります。

これまでに2つの方法を見てきました。

最初のものは使用すること#pragma warning( push )です#pragma warning( pop )

2番目は使用すること#pragma warning( default )です:

2番目のバリアントで見られる問題は、元の警告レベルが破棄されることです。その前に警告がオフになっていたか、警告レベルが変更されている可能性があります。を使用defaultすると、これらの変更は破棄されます。

最初のアプローチはきれいに見えます。何か問題はありますか?同じことを達成するためのより良い方法はありますか?

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

c++ - C++ DLL のインスタンス間でオブジェクトを共有する

みんなおはよう、

タイトルが明確でない場合はご容赦ください。ここで詳しく説明します。

現在、VBS2 の ASI を使用しています。VBS2 は、VBS2 DLL プラグインから関数を実行します。VBS2 によって実行されているものを変更するために、使用中にそのプラグイン内の変数を変更するために使用したい独自のアプリケーションがあります。ばかげているかもしれませんが、VBS2 プログラムの実行中にアプリケーションで変数を直接変更することから始めました。

これが機能しなかったとき、テストしたところ、VBS2 プログラムが、変数を格納していた「メッセージ」オブジェクトの別のインスタンスを、アプリケーションがアクセスしているものとは異なるインスタンスを使用していることがわかりました。

私がやりたいことは、アプリケーションが VBS2 によってアクセスされるオブジェクトの同じインスタンスにアクセスすることです。私は少し実験しました

しかし、何らかの理由で、2 つのインスタンスが使用されているように見えます。

私はすべての助けを大いに感謝し、C++ は私にとって新しい言語であることを付け加えたいので、優しくしてください。:)

ありがとう、M

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

c - プラグマで gcc 4.2.1 の警告を抑制

ローカル変数のアドレスを返すことによって引き起こされる gcc によって発行される特定の警告を抑制したいと思います。

プラットフォーム: この問題は少なくとも MacOSX 10.5 Snow Leopard に存在します。Linux ではまだ試していません。

理由を知りたい場合は、警告をエラーに変えて実行し、長いビルド プロセスを停止して、実際に問題を確認し、それらを修正するように強制できるようにしたいと考えています。

この特定のコードはバグではなく、スタック ポインターを見つけるための "移植可能な" 手法です (MSVC でも機能します)。[実際には、スタック ポインタが 2 つある Itanium では動作しません]

スタック ポインターは、ガベージ コレクション ルーチンで使用するために必要です (中断されたスレッドのスタックでポインターを検索するため)。

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

perl - 警告プラグマを使用すると、どのような種類の警告が有効になるかを確認するにはどうすればよいですか?

警告プラグマを使用すると有効になるさまざまな警告をすべて表示するコマンドまたは変数はありますか?

0 投票する
6 に答える
7693 参照

c - プラグマを使用せずに C で構造パディングを無効にする

プラグマを使用せずに C で構造パディングを無効にするにはどうすればよいですか?

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

html - richfacesdataOrderedListとカスタムバックエンドリスト[編集:ブラウザキャッシュ!!!]

このオブジェクトを含むバッキングBeanがあります
。List<Session>セッション。

セッションは、いくつかの標準フィールドだけでなく、次のクラスもあり
ます。List<Entry>エントリ。

エントリは、いくつかのフィールドを含むクラスですが、それらはすべて標準のJavaオブジェクトです。

つまり、このようになります。
リスト<セッション>
 | -セッション
   |-リスト<エントリ>
     | -エントリ

List<Entry>に直接アクセスしてみましたが成功しました。
しかし、List <Session>にアクセスしようとすると、次のエラーが発生します。

javax.faces.FacesException:javax.el.PropertyNotFoundException:/pages/console.jspx @ 75,109 value = "#{session.sessionID}":クラス'org.apache.catalina.session.StandardSessionFacade'にはプロパティがありません'セッションID'。

(sessionIDはSessionクラスのStringフィールドです)

これを修正する方法はありますか?(コンバーターはこれを解決できますか?)

jspxコードは次のとおりです。



前もって感謝します !!