Last Update 2022/11/26
プリプロセスを必要とし、
ファイル名の拡張子が「.c」であるときのコンパイラの動作
または
ファイル名の拡張子が「.cpp (.cc, .cp, .cxx, .CPP, .c++, .C)」であるときのコンパイラの動作
に関するテスト
ファイル名の拡張子が「.c」であるときのコンパイラの動作
または
ファイル名の拡張子が「.cpp (.cc, .cp, .cxx, .CPP, .c++, .C)」であるときのコンパイラの動作
に関するテスト
テスト概要
プリプロセッサ命令を含み、ファイル名の拡張子が「.c」で記述コードがC言語である場合のコンパイル結果
PASS
コンパイル終了・実行ファイル生成
プリプロセッサ命令を含み、ファイル名の拡張子が「.c」で記述コードがC++である場合の結果
FAIL
拡張子でC言語と判定されるため、エラー発生・停止
プリプロセッサ命令を含み、ファイル名の拡張子が「.cpp」で記述コードがC++である場合の結果
PASS
コンパイル終了・実行ファイル生成
プリプロセッサ命令を含み、ファイル名の拡張子が「.cpp」で記述コードがC言語である場合の結果(コードに互換性がある場合)
PASS
コンパイル終了・実行ファイル生成
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
ファイル名の拡張子が「.c」で記述コードがC言語である場合の結果
sample_c.c
記述コードはC言語でプリプロセッサ命令を含む
拡張子は「.c」
記述コードは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
$
ファイル名の拡張子が「.c」で記述コードがC++である場合の結果
sample_cpp.c
記述コードはC++でプリプロセッサ命令を含む
拡張子は「.c」
記述コードはC++でプリプロセッサ命令を含む
拡張子は「.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言語と判定されるため、エラー発生・停止
ファイル名の拡張子が「.cpp」で記述コードがC++である場合の結果
sample_cpp.cpp
記述コードはC++でプリプロセッサ命令を含む
拡張子は「.cpp」
記述コードはC++でプリプロセッサ命令を含む
拡張子は「.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++
$
ファイル名の拡張子が「.cpp」で記述コードがC言語である場合の結果
sample_c.cpp
記述コードはC言語でプリプロセッサ命令を含む
拡張子は「.cpp」
記述コードは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
$