問題タブ [one-definition-rule]

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 に答える
4901 参照

c++ - ヘッダー ファイルでラムダを使用すると、ODR に違反する可能性がありますか?

ヘッダーファイルに次のように記述できますか?

また

各ソースファイルでは、ラムダの型が異なる可能性があるため、std::function(target_typeの結果に含まれる型は異なります)。

これは ODR ( One Definition Rule ) 違反ですか? よくあるパターンのように見えますが、これは妥当な行為ですか? 2 番目のサンプルは毎回 ODR に違反しますか?それとも、少なくとも 1 つのコンストラクターがヘッダー ファイルにある場合にのみ違反しますか?

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

c++ - ODR の使用に関するさらに別の clang/gcc の不一致はありますか?

このコードが GCC (4.9 および 5+) でコンパイルされるのに、clang (3.5-3.9) ではコンパイルされないのはなぜですか?

不一致が ODR (One Definition Rule) の使用に関係しているという漠然とした考えがありますが、ここで何が起こっているのかを理解するのに十分ではありません。

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

android - Android.mk でビルドされたアーカイブで ranlib を実行するには?

これは、私が定期的に使用しているいくつかのライブラリで発生しました。たとえば、次を参照してください。

質問では、ユーザーは OpenSSL および Crypto++ ライブラリ用の Android.mk を作成しました。問題点は、ソースに Android.mk ラッパーを追加するユーザーにあるようです。

Android 以外では、各プロジェクトは Makefile ベースであり、各プロジェクトは静的アーカイブを構築し、各プロジェクトは静的アーカイブに基づいて共有オブジェクトを構築します。各プロジェクトもranlib静的アーカイブで実行されます。ranlibCrypto++ は、C++ ライブラリであり、1 つの定義規則違反が未定義の動作につながるため、特に必要性に敏感です。

Android.mk を使用して静的アーカイブを構築する場合、Android.mk を介してアーカイブで ranlib を実行するにはどうすればよいですか?