我有一個程序除了main.cpp和一個常量的頭兩個外部文件。所以共有四個文件。它們包含以下代碼:範圍在多文件程序
的main.cpp
#include <iostream>
using namespace std;
int ext1_func();
int ext2_func();
int main()
{
int i;
i = ext1_func();
cout << i << endl;
i = ext2_func();
cout << i << endl;
return 0;
}
ext1.cpp
#include "const.h"
int asd1=1;
int ext1_func()
{
return temp_int;
}
ext2.cpp
#include "const.h"
int asd2 = 2;
int ext2_func()
{
return temp_int;
}
const.h
#ifndef CONST_H
#define CONST_H
const int temp_int=1;
#endif
我期望如下:
1)在ext1.cpp聲明的任何變量應該已知僅到ext1.cpp內的功能,同樣也ext2.cpp。因此,「ext2_func」只能被稱爲「ext1_func」和「asd2」。
2)在「exp1.cpp」和「ext2.cpp」必須能夠看到所有的值定義「const.h」
我相信我的代碼編寫並附加滿足這些功能要求,但我想問問我是否正確地做了?有沒有比我建議的更容易的方式來獲得所需的行爲?
在此先感謝。
Niles。
最大的問題'變量在其源文件之外是可見的(在各種答案中討論__),並且(2)沒有頭部聲明用於強制使用函數的代碼('main.cpp')之間的一致性的函數和定義函數的代碼('extN.cpp')。當然,C++有類型安全的鏈接(不像C,我主要工作)。但是,一般來說,最好不要在源文件中編寫extern聲明 - 應該有一個聲明用於強制執行一致性的函數的頭文件。 –