(十八)多檔案專案及編譯過程
阿新 • • 發佈:2018-12-18
extern
-
在宣告變數的時候不能加初始值
extern int a =10;//錯誤
-
在訪問other.cpp的全域性函式時,extern可以不寫
-
在訪問other.cpp的全域性變數時,必須加上extern
多檔案專案的生成
- 編譯:將多個cpp檔案轉化為中間檔案*.obj
- 連結:將多個obj檔案轉化為*.exe可執行程式
標頭檔案#include指令
- 將類的定義與函式名稱寫在*.h裡面,將函式具體實現寫在other.cpp裡面,主函式為main.cpp
巨集定義#define
-
所有#開頭的指令都是預處理指令
-
在預處理時,採用的是原文替換,#include就是如此
#define n 1+2 int main() { int a = 4 * n; }
此時n不是3,而是原文替換為1+2,即a = 4 * 1 + 2,a的值為6
-
條件編譯指令
#if
#endif
#ifdef
#endif
- 標頭檔案的重複包含問題
#include "Object.h"
#include "Object.h"//重複包含相同的標頭檔案
#ifndef _OBJECT_H
#define _OBJECT_H
...
#endif
*main函式的引數和返回值
- main函式的標準形式
int main() int main(int argc,char* argv[])
argc表示命令列引數的個數,argv表示命令列引數的值
在命令列視窗執行這個程式
#include <stdio.h>
int main(int argc, char** argv)
{
for(int i=0;i<argc;i++)
{
printf("%s\n",argv[i]);
}
}
命令列切換到* .exe所在目錄,輸入*.exe 123 abc 456 def
會依次輸出*.exe 123 abc 456 def
這說明argc值是5,argv[]儲存的字串就是以上字元
static修飾變數
- 在other.cpp中用static修飾一個變數,該變數稱為靜態變數,僅能在other.cpp內可見
- 此時在main函式中不能用extern來訪問它,static修飾函式時同理