c++ - 库里面实现文件与头文件的问题
PHP中文网
PHP中文网 2017-04-17 14:44:52
0
2
555

在github上看到一个项目,其中lib目录下的实现文件包含有另一个head文件夹下的头文件。lib文件夹和head文件夹不是同级的文件夹,head文件夹是另一个文件夹的子文件夹。但是lib文件夹里面的实现文件直接以#include "head/xx.hpp"的方式包含着头文件的。想知道为什么可以这样包含,lib下的实现文件如何能够访问到那个头文件呢?
先谢谢大家了

PHP中文网
PHP中文网

认证0级讲师

全員に返信(2)
刘奇

今回は、gccri の -I パラメータ、たとえば、head/xxx.h の場所が /path/to/libs/head にあります。 /xxx.h、代わりに#include "head/xxx.h"、以下のパラメータを使用してください:

gcc lib/xxx.c -I/path/to/libs

man gcc如下:

-I ディレクトリ
     検索するディレクトリのリストにディレクトリ dir を追加します。
     ヘッダー ファイル。  -I で指定されたディレクトリは、
     標準システムにはディレクトリが含まれます。  ディレクトリ dir が
     標準システム インクルード ディレクトリでは、オプションは無視されます。
     システム ディレクトリのデフォルトの検索順序と、
     システムヘッダーの特別な処理も負けません。  ディレクトリの場合
     「=」で始まる場合、「=」は sysroot に置き換えられます。
     接頭語; --sysroot と -isysroot を参照してください。
いいねを押す +0
左手右手慢动作

以前に省略されたパス プレフィックスを設定する構成オプションがあるはずです。プロジェクトのクローンを作成し、sublime などを使用して欠落しているパス文字をグローバルに検索すると、どこに設定されているかがわかります。
通常、プログラムを作成するとき、以前の #include は現在表示されているディレクトリには配置されません。 Linux システムには、C_INCLUDE_PATH などのいくつかのデフォルトの環境変数があり、これらのパスは、インクルード時にデフォルトで検索されるヘッダー ファイルのパスです。後で独自のパスを追加し続けることができます。
プロジェクトがどのプラットフォームで動作しているかわかりません。Android と同様に、jni をコンパイルするときに、LOCAL_C_INCLUDES を使用してヘッダー ファイルのパスを指定するだけで、長いヘッダー ファイルのパスは省略できます。コード。
Linux システム ヘッダー ファイルの検索パスなどのキーワードを検索して、関連する知識を学ぶこともできます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート