是否可以使用#define更改#include文件名

Is it possible to alter #include filenames using #define?

本文关键字:#include 文件名 更改 #define 可以使 是否      更新时间:2023-10-16

我正在使用一些旧的C++代码,这些代码显然早于标准化,并从iostream.h移动到iostream,对于其他包含也是如此。因此,我相对现代的g++版本在尝试#include <iostream.h>等时失败了

我很好奇是否可以使用预处理器通过命令行将iostream.h的实例更改为仅iostream。我尝试过将-Diostream.h=iostream附加到g++,但这似乎并没有改变include语句。

我猜预处理器不可能修改include语句?

#include语句有三种形式。

# include "h-char-sequence" new-line
# include <h-char-sequence> new-line
# include pp-tokens new-line

其中CCD_ 8必须扩展到前两种形式之一。

您可以使用:

#include IOSTREAM

并使用-DIOSTREAM="<iostream>"-DIOSTREAM="<iostream.h>"进行编译,具体取决于使用的编译器版本。

但是,你不能使用

#include <iostream.h>

并用CCD_ 11进行编译。

这有几个问题。

  1. iostream.h不是有效的预处理器宏
  2. #include语句的形式不适合进行宏扩展

如果您准备迁移代码库以使用新的C++标头,那么最好使用您最喜欢的脚本方法将所有旧式C++标头更改为新的C++标题。