c+ 11の標準をサポートするためにコンパイルします。not a member問題を解決します。

1289 ワード

参照http://blog.csdn.net/cssmhyl/article/details/8114386コンパイル4.7.2元の作者に感謝します。
g++4.7.2を使ってc+11を熟知して、次の問題に出会います。
'thread'isnotamemberrof'std
'yield'is not a member of'std:this_thread
sleep_for’is not a member of'std:this_thread.
理由は、コンパイル時にオプションが不足しているため、一部のマクロがc+config.hなどのファイルに生成されていないため、コンパイルされたgccには新しい名前空間オブジェクトが外部に隠れています。
_。GIBCXX_HASGTRADS _GIBCXX_USE_NANOSLEEP _GIBCXX_USE_SCHEDYIELDのこれらのマクロは、定義されているだけで、いくつかの新しい関数空間領域などを使用することができます。g++−Dマクロ名が到来したときに解決できます。
いつまでも苦労するなら,gccを新たに編むしかない。
コンパイルオプションを
configure --enable-languages=c,c++ --enable-libstdcxx-time --disable-checking --prefix=/usr/local/gcc-4.7.2 --disable-multilib --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
--enaber-langersは、あなたがそれらの言語をgccでサポートするという意味です。
--enabole-libstdxxt-time,c+2011のいくつかの新しい特性時間yield naosleep this_を開きます。thread etc.
--disable-multiilibは、他のプラットフォームの実行可能コードにコンパイルされたクロスコンパイラを生成しません。
--disable-checkingで生成されたコンパイラはコンパイル中に追加の検査をしません。
具体的には公式によるhttp://gcc.gnu.org/install/configure.htmlドキュメントlibstdc++に会いましょうhttp://gcc.gnu.org/onlinedocs/libstdc++/manaual/configure.
編集し直したら、g++はc+11の新しい特性を使うことができます。を使用します。
g++-std=c+11 testc++11 cpp