我试图简化应用程序的部署。 为了构建一个最终用户的机器上的最终应用,一对夫妇的C文件需要编译。 这意味着,几十头文件必须与应用程序一起提供。 我希望能够预先包括包括文件的内容, 但我也需要能够控制指令( #if
等),包括在内衬后。 我无法找到一个CPP的选项,让我只包括头,没有做预处理的其余部分。 我有哪些选择?
例:
File1.h
void dummy_func()
{return;}
File2.h
#if INCLUDE_FILE1
#include "file1.h"
#endif
最后,我想,说一个文件:
#if INCLUDE_FILE1
void dummy_func()
{return;}
#endif
由于双include防范,即内联的#includes可能导致一个巨大的文件的工具,那里有很多头的完全内部#ifndefs不匹配。 在极端情况下,它甚至可能导致无限大小的输出文件中,如果包括是递归的(通常是不因为双包括防护装置的一个问题)。
我只是确认这代码编译成功:
main.cpp中:
#include "a.h"
int main() { return 0; }
啊:
#ifndef A_H_INCLUDED
#define A_H_INCLUDED
#include "b.h"
#endif
BH:
#ifndef B_H_INCLUDED
#define B_H_INCLUDED
#include "a.h"
#endif
既然你想保留的ifdef原封不动,未分析,一种工具,内联#includes
会导致无限输出。
怎么样使用#ifdef来#如果部分被编译成控制哪些?
为了构建一个最终用户的机器上的最终应用,一对夫妇的C文件需要编译。 这意味着,几十头文件必须与应用程序一起提供。
所以呢? 如果你把所有的文件(包括标题)成压缩包,和你有一个健全的构建系统( 你至少有一个Makefile,不是吗?),什么是与具有大量文件的问题?