• ベストアンサー

BCCで出来るのにVCだと出来ない。

あるソースをborlandでコンパイル(メイク)して実行するとうまくいくのですが そのソースをVisual stdioでコンパイルして実行するとエラーが出てしまいます。 このようなことが普通あるのでしょうか? それともVisual Stdioのどこかがおかしいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.6

↓BCCだとエラーが出なかったけど大概のコンパイラでは実行時エラーになると思う #include<stdio.h> int main(void) { char *a = "aaa"; *a = 'b'; printf("%s", a); return 0; }

noname#61385
質問者

お礼

ありがとうございます! 返事遅くなってしまいましたが原因はそれでした。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.5

実行時エラーということですから、BCCではたまたま症状があらわれなかっただけという可能性もあります。 変数の初期化を忘れた場合になんかに起こります。

全文を見る
すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

初めから移植性に配慮した設計&コーディングを行っていなければ、普通に起こりえます。 移植性に配慮する際は、標準規格に厳密合致しているかどうかだけでなく、処理系の不具合にも配慮する必要があります。

全文を見る
すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★アドバイス ・VCLとMFCの違いかもしれない。  BCC製ではVCL、VC製ではMFCを使っているソースの場合。  一方では正しくコンパイルできるがもう一方ではコンパイルができなくなります。 ・これ以外でエラーが出る場合はオプション設定などでマルチバイトとUnicodeの  文字コードをTEXT()マクロなしに文字列リテラルを書いているとか。  他にも原因はありそうですがこれ以上はソースを見ないと分かりません。

全文を見る
すると、全ての回答が全文表示されます。
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

エラー内容や、ソースなどを見ないと断言はできませんが、 一般にソースの問題である可能性の方が高いです。 普通に起こります。 ソースがバグってるのか、処理系定義の差なのかは見ないとなんとも…です。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

起こりえます。 たとえばコンパイラの独自拡張を利用したコードとか。 食わせたコードを見ないことには何ともいえませんけども。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • BCC Developerについて。

    Borland C++ Compiler、BCC Developerを使って #include <stdio.h> void main(){ printf("Hello C world.\n"); } をメイクしてみたのですが、 インクルードファイル 'stdio.h' をオープンできない 、と表示されコンパイルできませんでした。 環境設定は、コンパイラにbbc32.exeを指定すればいいだけなんでしょうか?よろしくお願いします。

  • VC++4.0→VC++6.0

    Visual C++4.0で作成したソースをVisual C++6.0で 読み込ませたい(VC++6.0で再コンパイルしたい)の ですが、.dswファイルを起動しても関連するファイルが 開いてくれません。(ファイルビューには.makしかない) Visual C++6.0で再コンパイルする方法を教えて下さい。 (VC++自体わからないのですが、コンパイル位は出来ます) そもそも出来ないのでしょうか? (VBは可能なので、VC++も出来るのかなと思いまして...)

  • BCC・stdio.h・_stddef.hのエラー

    BCCと同梱されているstdio.hのエラーなのですが、 stdio.hのエラーは他では出なかったので、 ソース自体がおかしいのかと思っていますが、よく分かりません。 一応ソースを載せます。 #include <stdio.h> int main(int argc, char *argv[]) { if(argv[1] == "") { printf("---(Ver1.00.01)\n"); printf("easy.exe [filename]\n"); printf(" [filename] - ファイル名を指定してください.\n"); } return 0; } これによって次のエラーを吐いてきます。 エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\_stddef.h 53: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\_stddef.h 72: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 51: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 104: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 105: 宣言が正しく終了していない エラー E2293 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 140: ) が必要 エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 150: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 151: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 152: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 154: 宣言が正しく終了していない エラー E2293 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 155: ) が必要 エラー E2293 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 156: ) が必要 エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 160: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 161: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 162: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 164: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 165: 宣言が正しく終了していない エラー E2141 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 166: 宣言の構文エラー エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 172: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 173: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 174: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 175: 宣言が正しく終了していない エラー E2141 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 177: 宣言の構文エラー エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 181: 宣言が正しく終了していない エラー E2040 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 188: 宣言が正しく終了していない エラー E2228 C:\[本名のローマ字表記] Program Files\Borland\bcc32\include\stdio.h 188: エラーあるいは警告が多すぎる stdio.h,_stddef.hのソースは一切変えたりしていません。 また、BCCのエラーは、stdio.hとprintfを抜いて int main(int argc, char *argv[]) { if(argv[1] == "") { } return 0; } としたときに 宣言が正しく終了していない と表示されます。 環境は WindowsXP SP1 BCC Developer です。 よろしくお願いします。

  • コンパイラによってエラーが出たり出なかったり

    構造体をポインタでつなぐリスト構造を使ったソースを書いて、Borland C++ Compiler 5.5 でコンパイルしたものを実行するとエラーで止まってしまいました。 コンパイル時には何も警告が出ませんでした。 しかし、ソースを何度見てもバグらしいコードが見つからなかったので、試しに Microsoft .NET Framework SDK でコンパイルしてみたところ、こちらも警告も出ずにコンパイルが通って、実行してみたらこんどは正常に動作しました。 コンパイラによって、実行時にエラーが出たり出なかったりするということは初めてなのでその原因を知りたくて質問しました。 どういった場合にこのようなことが起こるのでしょうか。 Borland C++ で出たエラーは、おそらくセグメントエラーだと思います。 今のところ正常に動いているのですが、なにかデンジャラスなコードを書いてしまった気がして気持ち悪いです。

  • VC++.NET と UTF-8

    C++ で書いたソースコードに UTF-8 エンコーディングで(日本語の)コメントをつけたのですが、そのコードを Visual Studio .NET でコンパイルするとコンパイルエラーになりました。 コメントを全部削除したらコンパイルできましたし、intel コンパイラ (windows/linux)、gcc (3.4.4 linux) ではコンパイルできたのですが、VC は UTF-8 が含まれているとコンパイルできない場合があるのでしょうか?あるいはソースが UTF-8 のときに有効なコンパイルフラグなどがあるのでしょうか?ちなみに IDE 上ではそれらのコメントは(文字化けなどなく)ちゃんと表示されてはいます。 よろしくお願いします。

  • コンパイルできない

    http://www.cs.bme.hu/~bodon/en/apriori/ ↑のサイトのソースをダウンロードしてコンパイルしようとしているのですが、 コンパイルできません。 どのように書き換えたらよいでしょうか? 実行環境 Cygwin gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) エラー内容 $ make MAKE Version 5.2 Copyright (c) 1987, 2000 Borland Error makefile 11: Command syntax error Error makefile 14: Command syntax error Error makefile 16: Command syntax error Error makefile 18: Command syntax error *** 4 errors during make ***

  • BCCでの日本語ファイル名の扱い

    こんにちは。 現在WindowsVistaで、Borland C++ Compiler 5.5(日本語版)を使い、プログラミングを行っています。 最近、bcc32.exeでソースファイルをコンパイルする際に、ソースファイルの名前に一部の日本語が含まれている場合は、コンパイルできないという事に気が付きました。 例えば、「161_ポインタの基礎.c」というソースファイルをコンパイル使用すると、以下の様にコンパイルエラーになります。 ------------------------------------------------------------ >bcc32 -c "161_ポインタの基礎.c" Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland 161_ポツンタの基礎.c: エラー F1009 161_ポツンタの基礎.c: 入力ファイル '161_ポツンタの基礎.c' をオープンできない *** 1 errors in Compile *** ------------------------------------------------------------ どうやら、「イ」という文字を、コンパイラが「ツ」と認識してしまっているようです。 こういった問題の解決策をWebで検索したのですが、見つける事ができませんでした。 ちなみに、僕の使っているBCCはすでに日本語版ですので、日本語化が必要というわけではなさそうです。 そこで解決策を御提供頂きたいと思っています。 何でもいいので、よろしくお願い致します。

  • VCでストップウォッチを作りたいのですが、うまくいきません。

    こんにちは。私は30代の男性です。 「Visual C++ の初歩(http://www.gulf.or.jp/~damayan/vc/visualc2.htm)」というサイトで、ストップウォッチプロジェクトファイルがダウンロードできたので、コピペしてコンパイルしようと思ったのですが、うまくいきませんでした。 いつも下記のようなエラーメッセージが表示されます。ヘッダーファイルに「stdafx.h」は置いてあるのですが、やり方が間違っているのでしょうか? ちなみに、ダウンロードした「release」ファイルの中のexeファイルを起動すれば、実行はされます。「自分が新規でプロジェクトファイルを作り、ダウンロードしたソースをコピーしてコンパイルを試みても、うまくいかない。」という話です。 よきアドバイスを頂ければと思います。 宜しくお願い致します。 ----- ビルド開始: プロジェクト: abc, 構成: Debug Win32 ------ コンパイルしています... abc.cpp c:\documents and settings\my documents\visual studio 2005\projects\abc\abc\abc.cpp(111) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? ビルドログは "file://c:\Documents and Settings\My Documents\Visual Studio 2005\Projects\abc\abc\Debug\BuildLog.htm" に保存されました。 abc - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

  • bccは分かりましたがgccが使えません

    Cのソースの#include <stdio.h>でエラーになります。 gccではbccのbcc32.cfgで行うような設定はどのようにすればよいですか? MINGWのコンソールで $ echo $C_INCLUDE_PATH c:/msys/1.0/mingw/include;c:/msys/1.0/mingw/lib/gcc/mingw32/3.4.5/include このように出ます。 $ gcc myapp.c で#include <stdio.h>の行でコンパイルエラーです。 MINGWでは$C_INCLUDE_PATHを正しく設定できているみたいですが、gcc.exeにそれが伝わっていないみたいです。 AUTOEXEC.BATには何も追記したくないので何も追記していません。 どうすればライブラリのパスを通せますか?

  • Visual C++ 2008について

    Visual C++ 2008について C++ソースをコンパイルして、正常に成功したのに、実行するときにエラーが出るのは、どのような理由がありますか?