Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否更好的做法是包括;弗林特;或;燧石/燧石.h“;_C++_C_Header Files_Include Path_Subdirectory - Fatal编程技术网

C++ 是否更好的做法是包括;弗林特;或;燧石/燧石.h“;

C++ 是否更好的做法是包括;弗林特;或;燧石/燧石.h“;,c++,c,header-files,include-path,subdirectory,C++,C,Header Files,Include Path,Subdirectory,库将所有标题放入$PREFIX/include/flint/中。然后,该库包含燧石标头。以下哪一项是Arb更好的实践: #包括“flint.h” #包括“flint/flint.h” 优点/缺点: 如果Arb和Flint安装在/usr/include(例如在Debian中),那么使用2,用户不必做任何事情,但使用1,用户需要使用-I/usr/include/Flint 所以2的优势。使用Arb库的用户只需为所有需要的库指定$PREFIX/include的包含路径(-I)。对于1.,必须包含路径$

库将所有标题放入
$PREFIX/include/flint/
中。然后,该库包含燧石标头。以下哪一项是Arb更好的实践:

  • #包括“flint.h”
  • #包括“flint/flint.h”
  • 优点/缺点:

    如果Arb和Flint安装在
    /usr/include
    (例如在Debian中),那么使用2,用户不必做任何事情,但使用1,用户需要使用
    -I/usr/include/Flint


    所以2的优势。使用Arb库的用户只需为所有需要的库指定
    $PREFIX/include
    的包含路径(
    -I
    )。对于1.,必须包含路径
    $PREFIX/include/flint
    ,因此看起来需要做更多的工作

    始终使用相对于
    /usr/include
    的路径。这样,您的代码将在大多数UNIX系统上开箱即用,避免名称冲突(想想header
    util.h


    一旦您的项目需要移植到开发人员不太友好的平台(主要是Windows),您的构建系统将需要确定依赖项的位置并设置适当的编译器开关。

    始终使用相对于
    /usr/include
    的路径。这样,您的代码将在大多数UNIX系统上开箱即用,避免名称冲突(想想header
    util.h


    一旦您的项目需要移植到开发人员不太友好的平台(主要是Windows)上您的生成系统需要确定依赖项的位置并设置适当的编译器开关。

    库的开发人员倾向于将类a放入头文件a.h中。如果您使用的两个库碰巧具有相同名称的类,则可能包含来自错误库的头文件,根据通过-I传递的include目录的顺序,有时确实会发生这种情况。C++命名空间机制在这里不起作用。这样做:

    #include "x/A.h"
    
    而不仅仅是

    #include "A.h"
    

    可以帮助您避免此类名称冲突,并确保包含x库中的A.h,而不是y库中的A.h。

    库的开发人员倾向于将类A放入头文件A.h中。如果您使用的两个库恰好具有相同名称的类,根据通过-I传递的include目录的顺序,可能会出现包含来自错误库的头的情况。C++命名空间机制在这里不起作用。这样做:

    #include "x/A.h"
    
    而不仅仅是

    #include "A.h"
    

    可以帮助您避免此类名称冲突,并确保包含x库中的A.h,而不是y库中的A.h。

    我个人更喜欢2。如果其他人在另一个项目中也有一个flint.h,而您也需要使用该文件呢?您需要使用“flint/”形式。所以从一开始就坚持这个观点。为什么这个问题应该以观点为基础来解决呢?有一个令人信服的技术论据,为什么应该首选第二种形式。确切地说,下面的两个答案(@pmr,@piokuc)都表明2。这是一条路要走。谢谢你们两位的回答!使用文档中的建议。Flint 2.4.4文档包含对
    的引用,包括“Flint.h”
    ;除非你确定你知道你在做什么,否则就照这个做。我个人更喜欢2。如果其他人在另一个项目中也有一个flint.h,而您也需要使用该文件呢?您需要使用“flint/”形式。所以从一开始就坚持这个观点。为什么这个问题应该以观点为基础来解决呢?有一个令人信服的技术论据,为什么应该首选第二种形式。确切地说,下面的两个答案(@pmr,@piokuc)都表明2。这是一条路要走。谢谢你们两位的回答!使用文档中的建议。Flint 2.4.4文档包含对
    的引用,包括“Flint.h”
    ;除非你确定自己知道自己在做什么,否则就跟着做。谢谢!所以2。走吧,谢谢!所以2。这是一条路要走。