コンパイルと事前処理に関する知識点

1762 ワード

コンパイルと事前処理に関する知識点


GCC


本質:翻訳官、高級言語を機械指令に翻訳する


一般的なオプション:

gcc -o    
gcc -o build 01.c ( )
gcc -v -o build 01.c
gcc -l -o-l 
gcc -L -o   -L 
gcc -E -o
gcc -S -o
gcc -c -o

コンパイルプロセス


第一歩:gcc-S-o a.s 01をコンパイルする.c第2ステップ:gcc-c-o a.o a.sをアセンブリする第3ステップ:gcc-o build 01をリンクする.c

プリプロセッシング


gcc -E -o a.i 01.c a.iを生成する

よくあるエラー


(1)前処理エラー:見つからない、未定義ソリューション:gcc-I./dir -o build 01.c(2)コンパイルエラー:構文エラー(3)リンクエラー:原材料が足りない(関数が実現していない)または原材料が多くなった(複数回実現)ソリューション:ラベルを探して実現するか、または1つの実装のみを残すか

前処理使用


defineマクロ置換構文チェックなし
include
事前定義マクロFUNCTION LINE FILE
条件コンパイル(スイッチ)#ifdef#else#endif
マクロを事前に定義する:gcc-DAABCは#define ABCに等価である
宏展が開いた#と###:
#define ABC(a)   #a       
#define DAY(a)    myday##a