No.3ベストアンサー
- 回答日時:
■マクロの定義位置について
処理系は通常「組込マクロ」を暗黙に定義します。
定義されるのはただのマクロですが、通常ヘッダ等には定義がありません。何が定義されるかは、処理系のマニュアルに書いてあります。
提示のマクロは、処理系の組込マクロと思われます。
■マクロの標準定義について
_ で始まる識別子は、言語仕様で処理系等のために予約されています。
このうち、いくつかのマクロは、言語仕様で定義が保証されます。(例:__FILE__, __LINE__, ...)
逆に、それ以外は処理系や環境の独自定義です。
(例:_WIN32, _MSC_VER, __BORLANDC__, __WATCOMC__,_M_IX86, ...)
■__mips__ について
提示の __mips__ は、何からの MIPS 用処理系で組込マクロとして定義されているものと思われます。
大抵のコンパイラは何らかの名前で類するマクロを定義していますが、その名前に標準はありません。
同名のマクロを定義しているかもしれませんし、ある処理系では _MIPS_ とかかもしれません。
■__mips__ 未定義の MIPS 環境における回避策について
仮に __mips__ が定義されていない場合、既に提示のあるように、コンパイルオプションで強制的に定義することもできます。
また、限定的なパターンが推測できるなら、予め対応を取っておくことも有効かと思います。
#if !defined(__mips__) && (defined(_mips_) || defined(_mips) || defined(_MIPS_)) // ... その他、ありそうなパターン列挙
#define __mips__
#endif
■ X86 環境について
__mips__ でないから X86 というのは少々乱暴かと思います。
CPU の種類はもっとあります。(例:ARM, PPC, SPARC,...)
おそらく、各環境で __mips__ に相当する __x86__ 等が定義されていると思いますので、X86依存部はそれを参照することをお勧めします。
「~X86環境での処理~」と書かれている部分が、実は環境非依存部なら提示のifdefで問題ありません。
■参考
多くのオープンソースプロジェクトは、共通ヘッダで環境を切り替えるためのマクロ定義をやっています。
そのヘッダを見れば、主要な処理系/環境で組込マクロの判定をしていますので、どんな環境では何が定義されるかの参考になると思います。
No.2
- 回答日時:
>でも、このプリプロはどこで定義されているのでしょうか
事前定義マクロというものでコンパイラが自動で定義します
詳細はコンパイラの仕様書に記載さています
例えばARMのコンパイラなら __arm というのが自動に定義されます
他にコンパイラのバージョンを定義しているマクロなどもあります
ASSERTの表示で使われる __FILE__, __LINE__ というのもこの一種です
WINDOWS上のコンパイラなら _WIN32 というのもあったように記憶しています
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- イヤホン・ヘッドホン・補聴器 HD660SかHD650のヘッドホン購入を考えています。今回、ヘッドホンを購入は初めてでありますが、 1 2022/10/27 10:18
- フリーソフト テキストエディア oedit の環境設定(初期設定)ファイルはどこ? 1 2022/11/18 15:40
- その他(AV機器・カメラ) BOSEサウンドバー300について 1 2022/10/05 06:50
- 経済学 因子分析における因子得点の解釈について 1 2022/12/10 02:05
- Excel(エクセル) excel2003でxlsxファイルを更新したい 6 2023/01/31 15:15
- ネットワーク クラウド環境の範囲について教えてください。 7 2023/03/09 15:50
- いじめ・人間関係 いじめ被害者の方へご質問/答えられる範囲で構いません 6 2023/06/21 14:25
- 防犯カメラ・監視カメラ・小型カメラ IP/ネットワークカメラ ICAMI モデルCA-715C-R という防犯カメラを買ったんですが、 1 2022/12/23 10:37
- Visual Basic(VBA) M365環境での動作エラー、及び対応相談 1 2023/01/27 04:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
EXCELのVBAでRange("A1:C4")を...
-
ExcelのVBA。public変数の値が...
-
一つのTeratermのマクロで複数...
-
マクロの連続実行
-
TERA TERMを隠す方法
-
Excel VBAからAccessマクロを実...
-
ピボットテーブルでの毎回可変...
-
VBAのIF分で時間指定の条件式の...
-
OnTimeを使ったのですが「エラ...
-
エクセルでキーリストからデー...
-
TeraTermマクロの文字列結合
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
VBA初心者 Ctrl+での操作、ボタ...
-
EXCELのマクロの重複起動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
他人が作ったマクロの理解
-
ExcelVBAでPDFを閉じるソース
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
TeraTermマクロの文字列結合
-
PDF出力マクロについて。マクロ...
-
#defineの定数を文字列として読...
-
エクセルのマクロをセルの値に...
-
wordを起動した際に特定のペー...
おすすめ情報