C++,如何动态包含.h

标签 c++ header

抱歉我的英语不好。

例如:

//
// File : Main.cpp
// 
#include <stdlib.h>
int main()
{
  printf(TEST_DEFINE);
  return (EXIT_SUCCESS);
}

标题:

//
// File : test_define.h
//
#ifndef TEST_DEFINE_H_INCLUDED
#define TEST_DEFINE_H_INCLUDED

#define TEST_DEFINE

#endif

我想通过编译器或其他程序包含该 header 。我不想在 CPP 文件中包含此 header 。

我该如何处理?我对所有建议持开放态度。

这种情况非常棘手,但对于我的 POC 程序来说是必要的。

最佳答案

GCC 有一个选项 -include file 这会导致预处理器包含 header ,就好像程序的第一行说 #include "file"

参见 manual

例如给定你的 main 的固定版本(应该是 #include <stdio.h> ):

#include <stdlib.h>
#include <stdio.h>
int main()
{
  printf(TEST_DEFINE);
  return (EXIT_SUCCESS);
}

和你的标题:

//
// File : test_define.h
//
#ifndef TEST_DEFINE_H_INCLUDED
#define TEST_DEFINE_H_INCLUDED

#define TEST_DEFINE "hello\n"

#endif

然后我可以这样使用它:

$ g++ -include test_define.h main.cpp -o main
$ ./main
hello

关于C++,如何动态包含.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12969672/

相关文章:

c++ - 为什么遍历修改后的 'std::vector' 比未修改的 'std::vector' 慢?

c++ - 在 std::vector 构造函数中使用 '{}' 作为结束迭代器

ruby-on-rails - 为什么 Heroku 不显示我的自定义 header ?

c++ - 使用 goto 可以创建编译器无法在 C++ 中生成的优化吗?

c++ - g++ 处理复制 std::complex

c++ - 如何在基类中实现子类迭代器的统一接口(interface)?

php - 如何解决 Apache 2.4 和 PHP 7.1 上 Chrome 中的跨站点 Google Analytics cookie `SameSite=None` 警告?

VBA Excel 如何插入预定行的标题

c++ - 在全局变量头文件 C++ 中初始化数组时出现问题

Angular HttpClient.get() 不返回完整的响应头