簡體   English   中英

使用g ++進行編譯-包括頭文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM