2

はい、それは初心者の質問です...

私はこれまですべてのプロジェクトにDev-C++を使用してきましたが、それは信じられないほど時代遅れであり、ライブラリもそうです。そこで、Visual C ++のコピーを開いて、コードをコピーしました。コンパイルすると、コードの1行おきにたわごとがあるかのように100万のエラーが表示されます。プロジェクトを最初からやり直すのは嫌だ。

質問:Dev-C++とVC++のコンパイルが異なるのはなぜですか?異なるコンパイラを使用していると聞きましたが、それでもC++です。私が最初に見たエラーは、constchar*とstd::stringの間の無効な比較でした。

とにかく、Dev-C ++のように、VC++のプログラミングの厳密さを緩和する方法はありますか。または、私が知っておくべきDec-C++コンパイラとVC++コンパイラの間にいくつかの大きな違いがありますか。

ほとんどのエラーはstd::string関連、またはLPCWSTRのようです(自分で修正できます)。

この非常に広範で役に立たないトピックについて申し訳ありませんが、私は知っています。

-アレックス

4

4 に答える 4

4

多くの Dev-C++ ユーザーが混乱しているため (以前はそうでした)、最初にいくつかの注意事項があります。

Dev-C++ はコンパイラではありません。コンパイラは GCC (より正確には、Windows で動作するように GCC を修正したバージョン: MinGW) です。Dev-C++ は IDE です。クリックすると適切なパラメータで MinGW を呼び出す追加のボタンを備えたテキスト エディタです。

これ以上何もない。

Visual Studio についても同じです。Visual Studio は Visual Compiler (vc.exe) を呼び出す IDE であり、Microsoft の C++ 標準の実装である VC++ を実装します。

2番目:初心者の質問ではありません。移植性の問題を発見しました。これは、C および C++ でフラストレーションの大きな領域です。StackOverflow に関する多くの質問は、移植性の問題 (Windows では機能するが Linux では機能しないコードなど) が原因です。

一般的な経験則は、1) コンパイラの警告レベルを最大に設定し、2) 対象とするすべてのプラットフォームで並行して開発することです。

お役に立てれば。

于 2010-08-24T12:09:20.627 に答える
1

これですべてが解決するわけではありませんが、役立つかもしれません。

デフォルトでは、VC++ はunicodeを使用しますが、MinGW (DevCpp のベースになっていると思います) はansiを使用します。

これは、文字列に関する問題を説明している可能性があります。基本的char*に、ほとんどの関数が のようなものを必要とする文字列を渡していますwchar*

UNICODEUnicode に準拠するようにコードを修正するか、Unicode が必要ない場合は VC++ プロジェクトでマクロを定義解除することをお勧めします。

あなたが述べたように、古いコードは C++ であり、コードも C++ であるため、コンパイラ固有の動作に依存しない限り、それほど多くの作業は必要ありません。

ひどくうまくいかないもののサンプルをいくつか教えていただけますか? より正確にお手伝いできるかもしれません。

于 2010-08-24T11:53:09.260 に答える
0

プロジェクトの設定は同じですか?おそらく、追加の .lib をリンクするか、Dev-C++ で行ったのと同様のプリプロセッサ ディレクティブを追加する必要があります。コードをコピーしてプロジェクトに貼り付けるだけでは、プロジェクト設定をすべてデフォルトに設定し直すことになり、多くのプロジェクトでビルドが中断されます。

それとは別に、あなたが受け取る最も一般的なエラーの 1 つをコード行とともに質問に追加してみてください。コメントできるかもしれません。

于 2010-08-24T11:52:46.853 に答える
0

Dev-cpp はコンパイラとして mingw を使用します。おそらく、別の IDE を介して mingw の更新されたバージョンを使用すると、より多くの幸運が得られるでしょう。これは、外部の依存関係に役立ちます (mingw はリンク先の *.a ファイルを使用する gcc を使用し、VC++ は *.lib ファイルを使用します)。

string と LPCWSTR について言及しているので、ereOn の回答を参照してください。UNICODE と _UNICODE が適切に定義されていることを確認してください (ビルド フラグで -DUNICODE または VC++ プロジェクト オプションで)。

于 2010-08-24T12:06:19.513 に答える