この例では、opensslでインストールされたヘッダー構造を使用します。
/ usr / include (またはWindowsボックスのインクルード検索パス内のいくつかのフォルダー) | + --openssl | +-e_os2.h +-rsa.h +-sha.h ..。
/usr/include
コンパイラには検索パスが含まれています。OpenSSLヘッダーは通常、次のように含まれます。#include <openssl/sha.h>
最初の行として、openssl/sha.hには次のものが含まれています#include <openssl/e_os2.h>
。だから、私の質問:インストールされたヘッダーが同じフォルダ内のヘッダーをそのように参照するのは本当に良い考えですか?そのようにe_os2.hを参照する場合、必ずしもsha.hと同じフォルダーにあるとは限らない、他の場所からe_os2.hを取得する可能性があります。たとえば、openssl includeのローカルコピーがある場所にあり、そのsha.hをこのようにインクルードした#include "../../3rdpath/openssl/sha.h
場合、互換性のないバージョンのヘッダーを組み合わせることで、コードに厄介なバグが発生する可能性があります。
#incldue <...>
コンパイラーがopenssl#incldue "..."
のようなlibにヘッダーを含めるための適切な方法とは異なる動作をするという事実を考慮しますか?
私は、opensslのやり方がそれを行う最も間違った方法だと思いました。他の2つの方法は次のとおりです。
a)#include "e_os2.h"
と
b)#include "./e_os2.h"
opensslの方法は次のとおりです。
c)#include <openssl / e_os2.h>
opensslで行われている方法を実行するというのは悪い決断ですか?a)またはb)に問題はありますか?b)同じフォルダーからのみe_os2.hを含めることを意味しますが、すべての主要なコンパイラー(ms cl、armcc、intel cl、gccなど)で保証されていますか?