[英]Compiling with g++ - including header files
我只是想回答一個簡短的問題,因為我試圖了解如何在C ++中編譯一個主程序(在ubuntu 12.04中),其中包括一個簡單的頭文件。
命令:
g++ -o main main.cpp add.cpp -Wall
工作正常。 但是,這使我對頭文件的要點感到困惑。 目前,我有一個簡單的程序:
#include <iostream>
#include "add.h"
using namespace std;
int main () {
int a, b;
cout << "Enter two numbers to add together" << endl;
cin >> a >> b;
cout << "Sum of " << a << " and " << b << " is " << add(a,b) << endl;
return 0;
}
我的“ add.cpp”只是將兩個數字加在一起。
頭文件僅僅是功能原型的替代品嗎? 我需要單獨編譯頭文件還是在命令行中包含所有.cpp文件是否足夠? 我知道,如果需要更多文件,則需要一個makefile。
#include
預處理程序代碼只是將#include
行替換為相應文件的內容,該文件在您的代碼中為add.h
使用g ++參數-E
預處理后,您可以看到代碼。
從理論上講,您可以將任何內容放入頭文件中,並且該文件的內容將使用#include
語句復制,而無需單獨編譯頭文件。
您可以將所有cpp
文件放在一個命令中,也可以分別編譯它們並最終鏈接它們:
g++ -c source1.cpp -o source1.o
g++ -c source2.cpp -o source2.o
g++ -c source3.cpp -o source3.o
g++ source1.o source2.o source3.o -o source
編輯
您還可以直接在cpp文件中編寫函數原型,例如(帶有NO標頭文件):
/* add.cpp */
int add(int x, int y) {
return x + y;
}
/* main.cpp */
#include <iostream>
using namespace std;
int add(int x, int y); // write function protype DIRECTLY!
// prototype tells a compiler that we have a function called add that takes two int as
// parameters, but implemented somewhere else.
int main() {
int a, b;
cout << "Enter two numbers to add together" << endl;
cin >> a >> b;
cout << "Sum of " << a << " and " << b << " is " << add(a,b) << endl;
return 0;
}
它也可以。 但是最好使用頭文件,因為原型可以在多個cpp文件中使用,而在更改原型時無需更改每個cpp文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.