Visual C++ Toolkitでcppをコンパイルすると・・

このQ&Aのポイント
  • Visual C++ Toolkitでcppをコンパイルすると警告が出る
  • コンパイル時に表示される警告内容の一部を解説
  • bccでは同じコードでも警告が出ない
回答を見る
  • ベストアンサー

Visual C++ Toolkitでcppをコンパイルすると・・

最近質問が多くてすみません。 一応調べてみましたが、同じような質問が既存ならば警告お願いします。 #include <iostream> int main(){ return 0; } これだけのファイルを、例えばtest.cppとして保存します。そして cl test.cpp とすると、ぶわーっと警告(warning)がでて、しかしtest.exeができあがります。 警告内容がかなり長いので、そのうちの1つを載せます。 C:\Program Files\Microsoft Visual C++ Toolkit 2003\include\stdexcept(39) : see reference to class template instantiat ion 'std::basic_string<_Elem,_Traits,_Ax>' being compiled with [ _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char> ] 意味がわかりません!! ちなみに、bccでは警告なしにコンパイルできます。

  • ggaogg
  • お礼率86% (209/243)

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

  • ベストアンサー
noname#30727
noname#30727
回答No.1

-GX を指定して下さい。と書かれていませんか? cl -GX test.cpp

ggaogg
質問者

お礼

確かに、cl /?では、 /GX[-] enable C++ EH (same as /EHsc) となっていました。 EHと(same as /EHsc)の意味はわかりませんが。 この2つが特別な未知のモードであるとばかり思っていました。すみません。 しかし、inthefloiさんのおかげで解決することができました。ありがとうございました。

関連するQ&A

  • ICPCの過去問

    ●問題→http://www.deqnotes.net/acmicpc/2684/ja ●模範解答→http://www.deqnotes.net/acmicpc/2684/2684-deq_1.cpp PKUに模範解答を提出すると、コンパイルエラーになります。なぜだか教えてください。 ●エラーの内容↓ Main.cpp F:\temp\11340104.347790\Main.cpp(17) : error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion) istream(1000): could be 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char *)'  with [ _Elem=char, _Traits=std::char_traits<char> ] istream(1007): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char &)' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(1014): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char *)' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(1021): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char &)' with [_Elem=char, _Traits=std::char_traits<char> ] istream(155): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_istream<_Elem,_Traits> &(*)(std::basic_istream<_Elem,_Traits> &))' with [_Elem=char, _Traits=std::char_traits<char> ] istream(161): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_ios<_Elem,_Traits> &(*)(std::basic_ios<_Elem,_Traits> &))' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(168): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::ios_base &(*)(std::ios_base &))' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(175): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::_Bool &)' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(194): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(short &)' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(228): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned short &)' with[ _Elem=char, _Traits=std::char_traits<char> ] istream(247): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(int &)' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(273): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned int &)' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(291): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(long &)' with [ _Elem=char, _Traits=std::char_traits<char> ] istream(309): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(__w64 unsigned long &)' with [_Elem=char, _Traits=std::char_traits<char> ] istream(329): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(__int64 &)' with [ _Elem=char, _Trait ・・・って感じでエラー文が続きます。全部入りきらなかったのでここまでとりあえず載せます。

  • c++のビルドエラーについて

    昨日からc++を学習し始めました。 pythonは2年ほどになりますが、c++は初めてだったので、コンパイルでエラーが起こってしまいわからなくなってしまったので質問させていただきました。 hello worldを出力しようと思いやってみたのですが、どこでエラーが起こっているのかがわかりません。 下記が私の書いたソースコードです。 #include <iostream> using namespace std; int main(){ cout << "HelloWorld." << endl; } エラーメッセージ C:\Users\ユーザー名\AppData\Local\Temp\ccKwbLoc.o: In function `main': C:/Users/ユーザー名/Documents/cpp/hello.cpp:4: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' C:/Users/ユーザー名/Documents/cpp/hello.cpp:4: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' C:\Users\ユーザー名\AppData\Local\Temp\ccKwbLoc.o: In function `__tcf_0': C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/iostream:74: undefined reference to `std::ios_base::Init::~Init()' C:\Users\ユーザー名\AppData\Local\Temp\ccKwbLoc.o: In function `__static_initialization_and_destruction_0': t::Init()' e to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' C:\Users\ユーザー名\AppData\Local\Temp\ccKwbLoc.o:hello.cpp:(.rdata$.refptr._ZSt4cout[.refptr._ZSt4cout]+0x0): undefined reference to `std::cout' collect2.exe: error: ld returned 1 exit status os:windows11 home 64ビット コンパイラ gcc (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project) 8.1.0 エディタ:vscode よろしくお願いいたします。

  • MingwでC++のソースがコンパイルできない。

    質問があるのですがよろしくお願いしします。 プラットフォームは Windows HOME です。 MinGWでC++のhelloworld.cppという名前のプログラム ------ここから----------- #include <iostream> using namespace std; int main(){ cout <<"Hello World!!\n"; return 0; } -------ここまで----------- を、gcc helloworld.cpp とWindowsのコマンドプロンプトから打ってコンパイルしようとしたのですが、 undefined reference to std string::size() const undefined reference to std string::operator[](using int) const undefinrd reference to std::cout undefinrd reference to std::basic_ostream<char, std::char traits<char> >&, char const*) undefinrd reference to std::ios_base::Init::() undefinrd reference to std::ios_base::~Init::() などのエラーが出て、コンパイルできません・・ hello.cという名前のC言語プログラム --------ここから------ #include<stdio.h> int main(void){ printf("Hello GCC World on Windows!!\n"); } ------ここまで------- は、gcc hello.c で正常にコンパイルでき、生成したexeファイルも正常に動きます。 また、eclipse CDT上からc++プログラムをMinGWでコンパイルすることもできるのですが・・ なぜかWindowsのコマンドプロンプトからc++プログラムをコンパイルしようとするとエラーが出てしまいます。(C言語のプログラムでもエラーが出ることが時々あります。) どなたか詳しい方いらっしゃいましたらご教授頂けると幸いです。 よろしくお願いします。

  • clock関数のコンパイルエラーで

    こんにちは。 C++プログラムの実行時間計測リスト #include<iostream.h> #include<time.h> int main(void){ clock_t start_time=clock(); int i; //ココから //計測したい処理を書く //ココまで cerr<<clock()-start_time<<"マイクロ秒"<<endl; return 0; } をRedHat9上でコンパイルしようとすると $gcc -o clock clock.cc /usr/include/c++/3.2.2/backward/iostream.h:31 から include されたファイル中, clock.cc:1 から: /usr/include/c++/3.2.2/backward/backward_warning.h:32:2: 警告: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated. /tmp/ccoZe32a.o(.text+0x1c): In function `main': : undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' /tmp/ccoZe32a.o(.text+0x3b): In function `main': : undefined reference to `std::cerr' /tmp/ccoZe32a.o(.text+0x40): In function `main': : undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(long)' : collect2: ld はステータス 1 で終了しました となってしまいます。これはどうすればコンパイルできるようになるのでしょうか?

  • C++のファイルの分割について教えてください。

    分割したプログラムの書き方を練習中なのですが、 下のようなプログラムを書いて、ビルドしようとしたら失敗します。 どこが悪いのか、教えていただけないでしょうか? (5)\test30\Debug\test30.exe : fatal error LNK1120: 外部参照 1 が未解決です。 1>test30 - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== //test30.cpp #include <iostream> #include "sub.h" int main(void) { std::cout<<"メインプログラムです。"<<std::endl; sub1(); sub2(); return 0; } ------------------------------------------------------------- //sub1.cpp #include <iostream> void sub1(void) { std::cout<<"サブ1です。"<<std::endl; } ------------------------------------------------------------- //sub2.cpp #include <iostream> void sub1(void) { std::cout<<"サブ2です。"<<std::endl; } --------------------------------------------------------------- //sub.h void sub1(void); void sub2(void);

  • C++について

    C++の独学初心者です 仕様書?やエラーの見方が全くわかりません 例えば vscodeにてreverse()の関数の説明を見ると以下のような仕様書というのでしょうか?ものが見れますが 私はここからわかるのは返り値がvoidであるということぐらいがだいたい想像できるだけです これはどの様に見れば良いのでしょうか? 解説している様なサイトがあれば教えてください void std::__1::reverse<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::iterator>(std::__1::__wrap_iter<...> __first, std::__1::__wrap_iter<...> __last) よろしくお願いします

  • C++がコンパイルできない...

    非常に初歩的な問題で恐縮なのですが、以下のようなシンプルなプログラムでコンパイルが出来ず困っております。 何がいけないのか、もしくは何をチェックすればよいかを教えて下さい *_*; program #include <iostream.h> int main(void){ cout << "matumoto"; } ---- 最初 void main(void)とした所、怒られたため、int ...としましたが、更に以下のようなエラーが出力されてしまいました 未定義の 最初に参照している シンボル ファイル std::ios_base::Init::~Init [in-charge]()/var/tmp//ccxj7cux.o std::ios_base::Init::Init[in-charge]()/var/tmp//ccxj7cux.o std::cout /var/tmp//ccxj7cux.o std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)/var/tmp//ccxj7cux.o __gxx_personality_v0 /var/tmp//ccxj7cux.o ld: 重大なエラー: シンボル参照エラー。a.out に書き込まれる出力はありません。 collect2: ld returned 1 exit status [環境] Solaris 8 gcc %>>gcc -ver Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.3/specs Configured with: ../configure --disable-nls --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld Thread model: posix gcc version 3.3 すみませんが、宜しくお願い致します。

  • 2つのcppファイルから

    1つのexeファイルを作る必要性が出てきました。 (現在質問中の質問に関連しています。) 例えば file.cpp: #include<iostream> using namespace std; void Output(int x) { cout<<x<<endl; } void main(void) { for(int i=0;i<9;Output(i++)); } をコンパイルリンクすれば済むことを file1.cpp: #include<iostream> using namespace std; void Output(int x) { cout<<x<<endl; } file2.cpp: void main(void) { for(int i=0;i<9;Output(i++)); } という風に分かれているファイルをコンパイルリンクしなければならないのです。 cpp -e file.exe -c file1.cpp -c file2.cpp ではエラーになります。 どうすれば良いのでしょうか?

  • 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++, strcpy の warning.

    VC2005 Express Edition を使ってます。 #include <iostream> #include <string> using namespace std; int main() {   char str[10] = "hello";   strcpy(str, "HELLO"); } ↑ こちらをコンパイルすると hello.cpp .\hello.cpp(8) : warning C4996: 'strcpy' was declared deprecated C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h(73) : see declaration of 'strcpy' という警告が出るのはどうしてでしょうか? #include <string.h> も試したのですが同じ警告でした。

専門家に質問してみよう