0

file.cpp ファイルで定義された変数値にアクセスできないのはなぜですか。メインとリンクされていると仮定します。トリッキーな部分は、変数値が間接的に含まれていることです。メイン関数には、extern として変数値を持つ file.h が含まれる header1.h が含まれます。このようなヘッダーのチェーンでexternを伝播できます

1) ファイル.h

extern int value;

2)ファイル.cpp

#include "file.h"
int value = 25;

3) header1.h

#include "file.h"
const int const_value = 100;

4) main.cpp

#include "header1.h"
int main(char *argv[], int args) {
int result = value*10;      
    return result;
}
4

1 に答える 1

1

はい、externこの方法で伝播できます。コンパイラはextern、使用時に変数が宣言されていることを確認するだけでよく、どのヘッダーを介しても問題ありません。ヘッダー ファイルの内容は、プリプロセッサによってソース ファイルの先頭に貼り付けられるだけです。したがって、コンパイラはヘッダー ファイルを認識しません。

ただし、ソース ファイルのコンパイルに必要なすべてのヘッダー ファイルを、そのヘッダー ファイルに個別に含めることをお勧めします。そのようなコードを維持することははるかに簡単です。

単純に、インクルードfile.hするmain.cppと、コードの読者にとってはるかに直感的になります。

于 2013-01-19T06:59:24.107 に答える