我通過Bjarne Stroustrup的「編程原理和使用C++編程」學習C++,本章的練習的第一部分是展示使用的.h文件。演練非常簡單,我把它跟在信上,但是當我嘗試編譯時,我總是收到'未定義的foo引用'。我將把這三個文件寫在下面,它們超短。與.h文件有關的問題,它似乎沒有正確鏈接
順便說一句,std_lib_facilities.h是作者包括的.h文件,它包含一些像iostream一樣的「包含」,以及'using namespace std;'以及作者寫到的一些函數,您需要不時使用
my.h - 包含extern int foo; void print_foo(); void print(int);
#ifndef MY_H
#define MY_H
extern int foo;
void print_foo();
void print(int);
#endif
my.cpp - 包括my.h限定print_foo()打印使用cout和打印FOO的值(int i)以使用COUT
#include "my.h"
#include "std_lib_facilities.h"
void print_foo()
{
cout << foo << '\n';
}
void print(int i)
{
cout << i << '\n';
}
使用打印i的值。 CPP - 包括my.h定義main()中foo的值設定爲7,並使用print_foo(打印)和使用打印()
#include "my.h"
int main()
{
foo = 7;
print_foo();
print(99);
}
我使用該操作系統是打印的99值Linux如果有幫助
「到foo未定義參考」哪一部分的你不知道?錯誤信息不能更清晰,你肯定沒有在任何地方定義'foo'。 –
「std_lib_facilities.h」大概是一個包含大量包含和「使用命名空間標準」的文件;儘快停止使用它。引入包括你不需要拖慢你的編譯器。 '使用名稱空間標準'可能會導致意外,並且在頭文件中是一個特別糟糕的主意,因爲無法將其反轉。 – aschepler