ifで使用される未定義定数の値は何ですか?
2023-11-08 02:42:44
質問
私のプリプロセッサは、未定義の定数を0とみなして
#if
の条件を評価するために、未定義の定数は 0 であると仮定しているようです。
これは当てになるのでしょうか、それとも未定義の定数は未定義の動作をするのでしょうか?
どのように解決するのですか?
はい、頼ることができます。C99規格では§6.10.1 ¶3で規定されています。
マクロ展開と定義された単項演算子によるすべての置換が行われた後、残りのすべての識別子はpp-noteに置き換えられます。 演算子による置換が全て行われた後、残りの全ての識別子をpp-numberで置換します。
0
編集
すみません、C言語の質問かと思いました。それでも大したことはなく、C++の規格の相当する部分(§16.1 ¶4)には、次のように書かれています。
マクロ展開と定義された単項演算子によるすべての置換が実行された後、残りのすべての識別子 を除く、残りのすべての識別子とキーワードが実行されました。
true
とfalse
は、pp-number に置き換えられます。0
の扱いが違うだけです。
true
と
false
であり、C言語では特別な処理を必要としませんが、C++では前処理段階でも特別な意味を持ちます。
関連
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] 未定義の動作とシーケンスポイント
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】'cout'は型名ではない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された