我已经回顾了问题如何正确使用include指令和C++ #include语义,并没有解决这个问题 - 当我输入标题时,SO也没有提出其他建议......
如果有的话,写作的好处是什么:
#include "../include/someheader.h"
#include "../otherdir/another.h"
Run Code Online (Sandbox Code Playgroud)
与仅使用普通文件名相比:
#include "someheader.h"
#include "another.h"
Run Code Online (Sandbox Code Playgroud)
或者没有' ..' 的相对名称:
#include "include/someheader.h"
#include "otherdir/another.h"
Run Code Online (Sandbox Code Playgroud)
我看到的问题是:
../dir1/include/../../include/../dir2/../include/header.h".我能看到的唯一优点是,虽然你不需要移动文件,但是你可以在不使用' -I'指令来查找标题的情况下逃脱,但是失去灵活性,以及子子编译的复杂性 - 目录等似乎超过了好处.
那么,我是否忽视了一项福利?
感谢您的投入.我认为大家一致认为,使用"......"的符号没有任何重大好处,我忽略了.一般来说,我喜欢"somewhere/header.h"符号; 我确实在新项目中使用它.我正在努力的是新事物.
其中一个问题是,有各种套头的,往往带有前缀,如rspqr.h,rsabc.h,rsdef.h,rsxyz.h.这些都与rsmp目录中的代码有关,但有些标题位于其中rsmp,其他标题位于中央include目录中,该目录中没有子目录rsmp.(并重复代码的其他各个方面;在多个位置都有标题,需要其他位代码随机使用.)移动内容是一个主要问题,因为多年来代码变得如此复杂.并且makefile与-I提供哪些选项不一致.总而言之,这是一个悲伤的故事,讲述了几十年来不那么温和的疏忽.在不破坏任何东西的情况下解决所有问题将是一项漫长而乏味的工作.
当#including文件名(在C中)时,是否可以从另一个宏连接字符串.例如,
我有,
#define AA 10
#define BB 20
Run Code Online (Sandbox Code Playgroud)
这些是随程序运行而变化的参数
该文件包括:
#include "file_10_20" // this changes correspondingly i.e. file_AA_BB
Run Code Online (Sandbox Code Playgroud)
是否有可能以#include "file_AA_BB"某种方式?我用谷歌搜索发现双磅操作符可以连接字符串,但找不到这样做的方法.
任何帮助,将不胜感激.
我正在尝试使用自己的构建系统构建freetype2(我不想使用Jam,我准备花时间去搞清楚它).我在标题中发现了一些奇怪的东西.Freetype定义了这样的宏:
#define FT_CID_H <freetype/ftcid.h>
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它们:
#include FT_CID_H
Run Code Online (Sandbox Code Playgroud)
我不认为这是可能的,确实Clang 3.9.1抱怨:
error: expected "FILENAME" or <FILENAME>
#include FT_CID_H
Run Code Online (Sandbox Code Playgroud)
这与如何在#include指令中使用宏有关?但不同,因为这里的问题是关于编译freetype,而不是编写新代码.