• 締切済み

gccでc++プログラムをコンパイルできません

gccで>gcc -o test.exe test.cppとしても'main' must return 'int' と出てコンパイルできません。ファイルは本のCDに入っていた物なので間違えは無いはずなのですが・・・

みんなの回答

回答No.2

一応 -Wno-main というオプションで、そのエラーは抑制できると思う。 あるいは int main(void) にして あとはソース見ないと分からないけど。 分岐とかなければ、最後に return 0; とか 書いておけばOK。 別にどっちでもOK。

  • gakkacho3
  • ベストアンサー率25% (27/106)
回答No.1

こんにちは 本に書いてある事全てが正しいとは限りません。 校閲ミスなんていっぱいあるんですから。 c++には詳しくないですが・・・、mainという関数?クラス?がint型の値を、どこかに渡すプログラムではないですか? returnを書いていないか、returnする方が間違っているのかもしれません(doubleとかfloatとか・・・)

関連するQ&A

  • gccでコンパイル時のエラー

    // test.cpp #include <stdio> using namespace std; int main(int argc, char *argv[]) { printf("test\n"); return 0; } 上記コードをコンパイルしたいのですが make -k g++ -g -O2 -Wall -I. -c test.cpp -o test.obj test.cpp:2:17: stdio: No such file or directory test.cpp: In function `int main(int, char**)': test.cpp:7: error: `printf' was not declared in this scope test.cpp:7: warning: unused variable 'printf' make: *** [test.obj] Error 1 make: Target `all' not remade because of errors. となります。 #include <stdio> using namespace std; を #include <stdio.h> // using namespace std; にすれば正常に終了するのですがなぜでしょうか? gccはMingw5.1.6からインストールしたもので、 バージョンはgcc3.4.5です。 Meadow上から実行しました。 回答よろしくお願い致します。

  • c++ファイルのコンパイル

    OSX(10.3)を使用しているのですが、ターミナルを使用してc++ファイルをコンパイルしようとすると以下のように表示されます。 ld: Undefined symbols: std::ios_base::Init::Init() std::ios_base::Init::~Init() ___gxx_personality_v0 c++ファイル自体は #include <iostream> int main(void) { return 0; } なので間違っていないと思うのですが (> <) コンパイルはgcc -o a.exe test.cpp で行いました。 どうすれば良いのでしょうか?分かる方お願いします。

    • ベストアンサー
    • Mac
  • C++のプログラムについて教えてください。

    C++のプログラムについて教えてください。 以下のようなプログラムでコンパイルを行うと、エラーが起きてしまい、原因が分かりません。 OSはMac OS X 10.6.4です。 プログラム //************************************ //main.cpp #include <iostream> class test{ private: static int num; public: test(); int get_num(); }; test::test(){ num=0; } int test::get_num(){ return num; } int main(){ test t; int num = t.get_num(); std::cout<<num<<std::endl; return (0); } //*********************************** g++ -o main main.cppでコンパイルした結果 Undefined symbols: "test::num", referenced from: test::test() in ccYWvIdB.o test::test() in ccYWvIdB.o test::get_num() in ccYWvIdB.o ld: symbol(s) not found collect2: ld returned 1 exit status のようにエラーが起きます。 どなたか分かる方がいればお願いします。

  • gcc コンパイル killed

    gccでC言語で書いたコードをコンパイルしたところ コンパイルには成功したのですが 実行してみると killed と表示されてしまいます #include <stdio.h> int main(){ printf("TEST\n"); return 0; } こんな簡単なものでもコンパイル後、実行すると killedと表示されTESTと表示されません $gcc test.c -o test $./test killed $ この様になります。ldid -Sでコンパイルされたファイルを直すことは可能なのですが どのコードでも毎回、killedという表示になってしまいます 毎回毎回コンパイル後にldidコマンドを使用するのも嫌なので直したいのですが "再インストール以外"の方法で直してみたいです。今後、同じようなエラーが起きた際、役にも立ちますし、Cについての勉強にもなりますので (再インストールでは詳しい原因がわかりません) 原因をご存知の方がいましたらよろしくお願いします。(Linux)

  • cygwinのgccで正常にコンパイルできない。

    cygwinのgccで正常にコンパイルできない。 cygwinのvimで、以下のプログラムを書きました。 ------------------------------------------------------------- #include <stdio.h> int main(void) { int no; printf("Please input something:"); scanf("%d", &no); printf("It is %d that you input it:\n", no); return (0); } ------------------------------------------------------------- それからgccでコンパイルしました。 コマンドは以下の通りです。 $ gcc test.c すると以下のエラーが出ました。 test.c:10:9: warning: unknown escape sequence: '\033' このようにコンパイルできない状態です。 どのようにすると正常にコンパイルできるようになるでしょうか?

  • gccですが、コンパイルができません!

    以下のプログラムですが #include <stdio.h> int main() { Int col; char i; scanf( "%d", &col ); for( i = 0 ; i < 26 ; i++ ){ if( i > 0 && ( i % col ) == 0 ) printf( "\n" ); printf( "%c", 'a' + i ); } return 0; } 以上のプログラムをgccでコンパイルしました。 コンパイルするために入力した文字→  gcc p.c -o p.exe 以下のエラーがでてコンパイルできません。 p.c: In function `main': p.c:4: error: `Int' undeclared (first use in this function) p.c:4: error: (Each undeclared identifier is reported only once p.c:4: error: for each function it appears in.) p.c:4: error: syntax error before "col" p.c:7: error: `col' undeclared (first use in this function) p.c:17:2: warning: no newline at end of file  以上なぜコンパイルができないのですか? よろしくお願いいたします。

  • Cコンパイラ(gcc)について

    はじめまして。 C言語のコンパイラについてお尋ねしても宜しいでしょうか。 以下のファイルが存在します。 ・test.c(C言語のソースファイル) ・test.exe(上記ソースをコンパイルしたもの。Windows環境で現在稼動してます) test.cの中身を一部変更し、コンパイルする必要があるのですが、 (恥ずかしながら、コンパイルした人間はもう居ないので) 何のコンパイラを使ったか、判りません。 コンパイルするときに使用したであろうコマンドがあります。 gcc test.c -WALL -03 -o test.exe 察するに、gccというコンパイラを使用したと思い MiniGW (http://yanchde.gozaru.jp/mingw/wingw_start.html) を使用してコンパイルをしてみました。 コンパイルは通るのですが、出来上がるexeファイルのサイズが 非常に小さいです。 (オリジナルのtest.exeは500KB以上ありますが、今回コンパイルで出来たものは40kbほどです) この場合、、オリジナルのtest.exeと今回コンパイルしたexeは 異なる挙動をする可能性はありますでしょうか。。 初歩的な質問で恐縮ですが、どうかご教授頂けると、幸いです。

  • Windowsコモンコントロールのcygwin/gccコンパイルエラー

    以下のサイトのようなWindowsコモンコントロールのプログラムをcygwin/gccコンパイルするとエラーがでます。 (sourceのサイト) http://wisdom.sakura.ne.jp/system/winapi/common/common16.html (ビルドコマンド) gcc -mwindows -mno-cygwin -o main.exe main.cpp (エラー出力) undefined reference to `_ImageList_Destroy@4' undefined reference to `_InitCommonControls@0' undefined reference to `_ImageList_Create@20' undefined reference to `_ImageList_ReplaceIcon@12' undefined reference to `_ImageList_ReplaceIcon@12' collect2: ld returned 1 exit status make: *** [main.exe] Error 1 Windowsコモンコントロールを含んだプログラムをcygwin/gccコンパイルするにはどうすればよいでしょうか? コンパイルは出来ないのでしょうか? よろしくお願いします。

  • cygwinのgccが、エラーになってしまいます。

    テストプログラム $ cat test.c #include <stdio.h> int main (void) { printf("Hello, World!\n"); return 0; } これを、コンパイルすると $ gcc test.c gcc: error trying to exec '/usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe': execv: Bad address /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../libcygwin.a(libcmain.o):(.text+0xba): undefined reference to `_WinMain@16' collect2: ld はステータス 1 で終了しました と、このようなエラーが出てきました。 ファイルを確認しても、何も作られていません。 $ ls test.c 対処方法を、ご教示願います。

  • cygwin gcc c99 での isnormal と strtold の使用

    Cygwinのgccで-std=c99オプションを付けて 以下のコードをコンパイルしようとしています。 #include <stdlib.h> #include <math.h> int main() { isnormal(0.123); strtold("0.123", NULL); return 0 ; } $> gcc -std=c99 test_strtold.c ですが、コンパイルできず、2つの関数とも'undefined reference'になります。 -std=c99を付けてコンパイルする方法または この記述と同等の別の記述がありましたらご教授願います。 よろしくお願いいたします。

専門家に質問してみよう