エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

googletest 1.4.0にていささか混乱中

googletestを検索してこのブログを訪れるひとが多くなったようなので、前回バージョン1.3.0のときに書いた時以降の新しい情報も載せておこうと、最新のバージョンである1.4.0を調べていたんですが。

Cygwin上でコンパイルするとき、g++のコンパイルオプションに-ansiを付けるとコンパイルエラーになる!?

原因を調べていくと、インクルードされるヘッダファイルgtest/internal/gtest-port.hの中で使われているfileno関数が未定義とのこと。
fileno関数が何者かはさておいて、-ansiオプションを付けるとコンパイルできなくなるということはANSI C++には含まれないの?と調べてみると。man filenoで書かれている文章の中に「POSIXには含まれるがANSI Cには含まれない」との文言が。

普段からコンパイルは-ansiオプションを付けているので、これは少々面倒なことになりました。テストコードのコンパイルだけオプションを外せば、まぁ運用上はどうにかなるんですが。


で。普段使っているもう一つの環境Mac OS Xでも同じように調べてみたところ…。-ansiオプション付けても通りました。なぜ?
同じようにman filenoで仕様を調べてみると、こちらにはCygwinのときに書かれていた文言がありません。


どっちが正しいのさ…(?_?)

普段からCygwin使ってたりMac OS Xをコンソールで使ってたりする割には、UNIX系の環境とかPOSIXとか、実はあんまり詳しくないというのがこういうところで露呈してしまいます。



Cygwinは会社での環境、Mac OS Xは自宅での環境で、こんなことになるとは思っていなかったのでバージョン番号とか確認していなかったわけで。引き続き調査しようと思います。