2017-01-19 3 views
-5

私はVisual StudioでC++プロジェクトを作成しますが、Cの関数とライブラリのみを使用すると、Cの速度が得られますか?もしそうでなければ、私はまだビジュアルスタジオを使うべきですか?私はC++としてコンパイルすればCはまだ高速ですか?

+1

はい、同じ速度 –

+4

C++はCのように見えますが、別の言語であり、Cコードのコンパイルに失敗することがあります。 – rustyx

+0

2つの異なるコンパイラを使用してコンパイルすると、速度が速くなるか遅くなる可能性があります。 –

答えて

4

CはほぼC++のサブセットですが、Cの動作が異なる場合があります。あなたはこのこの記事についての詳細を見つけることができます:Where is C not a subset of C++?

それでも、C++としてコンパイルされたCコードは、あなたがg++ -S source.cgcc -S source.cで生成されたアセンブリコードを見てみることができますCと同じまたはほぼ同じになり、これら二つの結果を比較します。 cppファイルでgccを実行すると、実際にはC++コンパイラが使用されることを忘れないでください!私はちょうど簡単なコードでそれを試してみた

(だから、一つのファイルtest.cの2つ目だけという名前のシンボリックリンクTEST.CPP作る):

#include <stdio.h> 
int main(int argc, char ** argv) { 
    printf("Argc: %d, argv[0]: %s\n", argv[0]); 
    return 5; 
} 

をそしてコンパイルされたコードは、100%同じです。それはもちろん、より複雑な例では異なるかもしれません。

+0

'g ++'は '.c'拡張子のファイルに対してCコンパイラを呼び出しませんか? –

+0

@カミル:...そしてその逆。はい、あなたは正しいです。あなたが答えた時にそれを追加していました。 –

+0

合理的な生産的なプログラムは、どちらの言語でも異なる意味を持ちます。同一のシンタックスは、同一のセマンティクスを意味するものではありません。 Cを「ほぼC++のサブセット」と考えると、悪い記述よりも悪いです。 – Olaf

0

私がC++としてコンパイルすると、Cはまだ高速ですか?

これは速くても遅くてもかまいませんが、おそらく同じです。それがまったくコンパイルされていると仮定します。言語の変更がプログラムの意味を変えないと仮定します。

速度よりもはるかに大きな問題は、動作が変更される可能性です。 Cで動作を定義したものの中には、C++での動作が未定義のものがあります。私はCプロジェクトが

高速に実行するために得ることができる方法

Cコンパイラを使用してください、そしてプロジェクトが早く、それがあったようとどまるだろう、と誤って実行時に内破しません。

C++コンパイラを使用する必要がある場合は、プロジェクトをC++に変換します。

関連する問題