From: Akinori MUSHA Date: 2012-11-06T20:44:11+09:00 Subject: [ruby-dev:46426] Re: 「意図したほうをincludeしてほしい」問題 --pgp-sign-Multipart_Tue_Nov__6_20:34:48_2012-1 Content-Type: text/plain; charset=ISO-2022-JP At Tue, 6 Nov 2012 17:28:27 +0900, KISHIMOTO, Makoto wrote: > きしもとです > > > #include "atomic.h" とは違って #include のように<>で囲んでいるので、システムのヘッダファイルが優先されるはず、と思っていたら、実はそうではなく、configureがコンパイル時のオプションとして "-I." を追加しているため、Rubyソース側の atomic.h しか読み込むことができず、どう頑張ってもシステムの /usr/include/atomic.h は読み込まれないことが判明しました。 > > rubyでは、はまったことはないのですが、逆のパターンで、 > base64.h (heimdal) とか、gc.h (Boehm GC) とかで、アプリ側の > ヘッダファイルをインクルードしてほしいのに、/usr/local/include に > ある、システム(ライブラリのパッケージ)の側のヘッダファイルが > インクルードされてしまい、トラブる、というパターンに不定期に > 見舞われています。 > > # -I/usr/local/include は他のライブラリのために要るので、 > # "" で囲んでもあまり意味がなく > > 「同名のヘッダファイル」問題のベストプラクティス、って無いもので > しょうかねぇ?  よく知られたヘッダファイルと同じ名前のものは作らず、必要なら階層化す べし、というところですかねえ。  gcc には #include "..." にだけ作用する -iquote dir というオプションが あり、これが正にずばりなのですが、 追随しているのは clang くらいかもし れません。 -- Akinori MUSHA / http://akinori.org/ --pgp-sign-Multipart_Tue_Nov__6_20:34:48_2012-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (FreeBSD) iEYEABECAAYFAlCY9dgACgkQkgvvx5/Z4e6ClACgx0eJ6JjWYfUp9dYLCWiwb5gu tJoAn1zXz2Uvof81gn1XF+UmK7ILRzFe =JiLP -----END PGP SIGNATURE----- --pgp-sign-Multipart_Tue_Nov__6_20:34:48_2012-1--