C/C++ プリプロセッサの行に 1 つのポンド記号 (#) を置く目的は何ですか? 質問する

C/C++ プリプロセッサの行に 1 つのポンド記号 (#) を置く目的は何ですか? 質問する

私はブーストライブラリのソース コードを見ると、プリプロセッサ ディレクティブが添付されていない単一のポンド記号が頻繁にあることに気付きました。GCC プリプロセッサ マニュアルと仕様ガイドを読みましたが、これについては何も見つかりません。

(1) #ifndef BOOST_CONFIG_HPP
(2) #  include <boost/config.hpp>
(3) #endif
(4) #
(5) #if defined(BOOST_HAS_PRAGMA_ONCE)
(6) #  pragma once
(7) #endif

4 行目のポンド記号の後に何も書かれていません。これはどのような効果がありますか? これは C プリプロセッサ (CPP) 仕様で定義されていますか?

Boost はクロスプラットフォーム ライブラリなので、どの CPP でも正しく解析できるはずです。コード全体にランダムにポンド記号やハッシュ記号を配置した場合、どのような影響や副作用があるでしょうか?

ベストアンサー1

#行にAだけを入れても、何の効果もありません。美的価値のために使用されているのだと思います。

C 標準では次のように述べられています:

6.10.7 ヌルディレクティブ

セマンティクス

次の形式の前処理指令

# new-line

効果はありません。

C++ 標準でも同じことが言われています:

16.7 ヌルディレクティブ [cpp.null]

次の形式の前処理指令

# new-line

効果はありません。

おすすめ記事