UBUNTU 16.04 LTSの.C
[大文字の注記に注記]拡張機能をCソースコードに割り当てて、Geditプログラムで開いてコードを入力します。gccは有効なCプログラムとして* .Cソースコードを認識しません
gccコンパイラをCプログラミングソースコードとして認識せず、コンパイルしようとするとエラーが発生します。
UBUNTUファイルマネージャは、それをcppファイルとして表示します。私たちは、これがC++固有のエラーである知っているように
$gcc test.C -o test
test.C:8:18: error: invalid conversion from ‘void*’ to ‘int*’ [-fpermissive]
int * c = malloc(sizeof(int));
、と私はgccが、そのCのような++ファイルを振る舞うと思う:
コード
#include <stdlib.h>
int main(){
int * c = malloc(sizeof(int));
free(c);
return 0;
}
のgccコマンドの出力をコンパイル言ったようにthis 。
これは私のシステム情報である
Linux ee 4.8.0-36-generiC#36~16.04.1-Ubuntu SMP i686 i686 i686 GNU/Linux
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
gedit - Version 3.18.3
私たちは単に(int*)
にmalloc()
の戻り値をキャストすることができます知っている、これは明らかに動作します。我々はmalloc()
戻り値の型がlinuxdie malloc()
を参照してくださいそして、C why not cast return of malloc()
に
をmalloc()
のタイプをキャストする真実ではありませんvoid*
である知っている
しかしは真のみ小文字の拡張子は、Cのソースコード.c
のために有効ですUBUNTUの下で、もし彼らがなぜこれをしているのですか?
もし私がこれを修正し、私のマシン上でsource.C
をgccでコンパイルできないのであれば。 MCGとして
編集
が答えに言った、我々は-x
フラグでそれを教えてくれている特定のタイプとして任意のファイルを処理するためにgcc
を強制することができます。我々はUBUNTU上の任意の拡張子なしの.f拡張子、あるいはソースコードをC、有効なソースコードを持っている場合
はたとえば、次のコマンドを使用して、それは、正確にどのと
コンパイルCのソースコードをコンパイルします延長:
gcc -x c src.f -o src // with .f or any others
gcc -x c src -o src //without extension
どのようにGCCを実行しましたか? – user2357112
'#include'(C++コンパイラを 'C'を使って強制するかもしれません) –
wildplasser
' .c'を小文字にして修正する必要があります。大文字の '.C'は、慣例によりC++ソースを表します。 – Ryan