C 17 のインライン変数について
2016 年に、C 標準委員会は C 17 標準の一部としてインライン変数を導入しました。この機能を使用すると、ヘッダー ファイルで定義し、リンカー エラーを発生させることなく複数の翻訳単位間で参照できる外部リンケージ変数を作成できます。
インライン変数の仕組み
変数にインライン指定子を適用すると、変数に外部リンケージを持たせることができます。つまり、異なる翻訳単位での変数の複数の定義が許可されます。複数の定義が存在する場合、リンカはそのうちの 1 つを選択し、他は無視します。
インライン変数の宣言、定義、使用
インライン変数は静的として宣言する必要があります。また、クラス定義または名前空間スコープで定義することもできます。これらは、brace-or-equal イニシャライザを使用して初期化するか、constexpr 指定子で宣言されている場合はイニシャライザを使用しない別の再宣言によって初期化できます。例:
struct Kath { static inline std::string const hi = "Zzzzz..."; };
このコードは、Kath 構造体で hi という名前の静的インライン変数を宣言します。変数は値「Zzzzz...」で初期化され、変数が定義されているヘッダーを含む任意の翻訳単位から Kath::hi を使用してアクセスできます。
インライン変数の利点
インライン変数にはいくつかの利点があります。
以上がC 17 インライン変数は外部リンケージの問題をどのように解決しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。