#include "MyHeader.h"
我希望MyHeader.h
是可选的,即即使它不可用也要构建
我可以使用预处理器,而不涉及构建系统吗?
答案 0 :(得分:1)
不,不是,实际上不是使用标准预处理器。 #include
指令是一个相当简单的指令,它基本上只是将对象拖入,就好像它是翻译单元的一部分一样。您可以将包含的内容包装在宏检查中:
#ifdef USE_MY_HEADER
#include "MyHeader.h"
#endif
但是那仍然需要以某种方式从构建系统中输入。
仅在文件存在的情况下,标准预处理器中没有用于引入文件的功能,但是您可能需要检查几种途径,例如:
只要确保始终是个文件,甚至是一个空文件。这样,您可以轻松地包含它,并且用户可以对其进行修改以添加所需的任何内容。他们只是无法删除它。
在编译使用该文件的任何文件之前让构建系统检查文件是否存在,如果不存在,请创建一个空文件。
考虑在编译时是否需要。只有在需要影响实际的编译本身时,才需要这样做。如果仅是影响程序在运行时的行为方式,则可以很容易地获得程序读取的配置文件,并使用该信息来更改行为。这样,您可以检测到不存在的文件并忽略它。