状況
- g++でコンパイル
- -stdの指定をしなければ万事うまくいく
- -std=c++11を指定すると、not declaredになる関数がたくさん出る
- snprintf, strdup, fileno等
hoge.cpp:20:21: error: ‘strdup’ was not declared in this scope
解決方法
-std=c++11ではなく、-std=gnu++11を使用する。参考にしたのは、2年ほど前のstackoverflowの記事でした。
acceptされた解答にあるように、厳密に標準のC++の関数ではなくてGNU拡張であるため、こういうことが起きるようです。
使用したg++はCygwin上の4.7.2でした。
> std=c++11ではなく、-std=gnu++11を使用する。
返信削除これは本当に盲点でした。
今、debian でも c++11 への切り替えが始まっているようですが、
この件が抜け落ちているようで、後で、問題になる気がします。
貴重なヒントをありがとうございます。
あちこち引っかかりそうですね。
返信削除幸い単純な解決法なので、知っていれば手間は大したことないですが。