Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。3,429件8実行時にネイティブエンディアンがリトルエンディアンか否かは、例えば以下のように判定できます。'\n';}C++11で定数式の機能(constexpr)が追加されたので、constをconstexprに変えればコンパイル時に判定できるのではないかと考えたのですが、reinterpret_castは定数式の中では使えないようで、コンパイルエラーになります。generated.コンパイル時にはネイティブエンディアンは決まっていると思うのでコンパイル時に判定したいのですが、Boostライブラリのようにコンパイラー独自のマクロで判定する方法以外で、何か方法はありますか?※リトルエンディアンか否かだけではなく、リトルエンディアン/ビッグエンディアン/その他に分類できればベストです。用途としては、外部データと内部データを変換する関数/クラスを作る場合に、外部データのエンディアンとネイティブエンディアンの関係で実装を最適化する、ということを想定しています。みたいに書きたくなるので結局マクロが欲しくなっちゃいます。コンパイル通りました。最適化指示に関係なく実行時判断になりました。最適化指示ありでは定数展開された様子です。マクロに使えないのでオイラ的には無用の長物ですが。コンパイルエラーになります。値としては使えないということです。型変数の先頭バイトを取り出すのは無理な気がします。票4yoh2さんコメントにある通り、C++14時点のconstexpr関数ではコンパイル時エンディアン判定は不可能です。本家SOの類似質問でも全てNO回答です。Libraryを使用できる環境ならば、下記が便利かと思います。いずれもC++03から使えるヘッダオンリーライブラリです。追加され、コンパイル時のネイティブエンディアン判定が可能になります。個の銅バッジあれ?C言語スタイルキャストかつ参照だと、GCCでもClangでもコンパイルできますね。評価されてしまいます。Endianと誤判定されるだけです。11:38そういうキャストになるのですか。ビッグエンディアンなマシン用のコンパイルサービスを知らなかったのでgcc.godbolt.orgも参考になりました。(これで他サイトのように実行もできると良いのですが。いふのがあるやうです。個の銅バッジ<*/endian.h>は、Boostライブラリの実装を見ると、C標準ライブラリやOSに依存しているようです。GCC/*BSD/MacOSはカバーできそうなので、後は(glibcを使わない場合の)ClangとWindowsをカバーできればメジャーな環境では大丈夫かもしれませんね。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。会を開催します🎉コメントで回答する理由を教えてくださいサイトの未翻訳箇所を見つけて、もくもく会で直しましょう関連する質問3C++で外部クラスを使用したプログラムがコンパイルできない4C++のios_baseが公開されていないといわれる2C++のコンソールアプリケーションが動かない1C++のコンパイルがうまくいきません0macでc/c++をコンパイルできない。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。