Loose-Info.com

Last Update 2020/08/30


TOP - 各種テスト - gcc - ファイル名の拡張子によるコンパイラの動作 - c, cpp

ファイル名の拡張子が「.c」であるときのコンパイラの動作
または
ファイル名の拡張子が「.cpp (.cc, .cp, .cxx, .CPP, .c++, .C)」であるときのコンパイラの動作

実行環境
GCC-8.2.0
GNU C Library 2.28


その1

ファイル名の拡張子が「.c」で記述コードがC言語である場合の結果

sample_c.c
/* ファイル拡張子 : .c */ /* コード記述言語 : C */ #include <stdio.h> int main(void) { printf("ファイル拡張子 : .c\n"); printf("コード記述言語 : C\n"); return 0; }

コンパイル実行結果
$ gcc sample_c.c $       プリプロセスを含むコンパイル終了

実行結果
$ ./a.out ファイル拡張子 : .c コード記述言語 : C $

その2

ファイル名の拡張子が「.c」で記述コードがC++である場合の結果

sample_cpp.c
/* ファイル拡張子 : .c */ /* コード記述言語 : C++ */ #include <iostream> int main() { std::cout << "ファイル拡張子 : .c\n"; std::cout << "コード記述言語 : C++\n"; return 0; }

コンパイル実行結果
$ gcc sample_cpp.c sample_cpp.c:4:10: fatal error: iostream: No such file or directory #include <iostream> ^~~~~~~~~~ compilation terminated. $       拡張子でC言語と判定されるため、エラー発生・停止

その3

ファイル名の拡張子が「.cpp」で記述コードがC++である場合の結果

sample_cpp.cpp
/* ファイル拡張子 : .c */ /* コード記述言語 : C++ */ #include <iostream> int main() { std::cout << "ファイル拡張子 : .cpp\n"; std::cout << "コード記述言語 : C++\n"; return 0; }

コンパイル実行結果
$ gcc sample_cpp.cpp -lstdc++       <--- ライブラリ指定が必要 $       プリプロセスを含むコンパイル終了

実行結果
$ ./a.out ファイル拡張子 : .cpp コード記述言語 : C++ $

その4

ファイル名の拡張子が「.cpp」で記述コードがC言語である場合の結果

sample_c.cpp
/* ファイル拡張子 : .cpp */ /* コード記述言語 : C */ #include <stdio.h> int main(void) { printf("ファイル拡張子 : .cpp\n"); printf("コード記述言語 : C\n"); return 0; }

コンパイル実行結果
$ gcc sample_c.cpp $       プリプロセスを含むコンパイル終了(コードに互換性がある場合)

実行結果
$ ./a.out ファイル拡張子 : .cpp コード記述言語 : C $