読者です 読者をやめる 読者になる 読者になる

拡張子のない Cファイルをコンパイルする

c compiler

quickrun.elでファイルに関連づいていないバッファで quickrunを実行する
とき、Cファイルとか C++だと拡張子がないということで怒られたので
その対応を調べてました。それについてのメモ。

問題点

#include <stdio.h>

int main (void)
{
    printf("hello world\n");
    return 0;
}

こんなファイルに "test"と名前をつけてコンパイルすると
以下のようにエラーとなる

% gcc test
test: file not recognized: File format not recognized
collect2: ld returned 1 exit status

解決策

language option(-x)を明示的に指定すれば拡張子がなくてもよい。

% gcc -x c test
% ./a.out
hello world

C++, Objective-Cについても同じです。詳しくは "man gcc"を参照して
ください。


なお clangは GCCと同じで Visual C++は試していませんが
"/Tc"オプション(C言語), "/Tp"オプション(C++)があるようです。


最新版の quickrun.elでは *scratch*バッファに C言語を書いて
実行できるようになりました。需要はないかと思いますが・・・。