sac*_*owl 7 c++ c-preprocessor
我正在使用一些旧的C++代码,这些代码显然是在标准化之前iostream.h进行的iostream,并且从其开始,以及其他类似的代码.因此,我的相对现代版本的g ++在尝试时失败#include <iostream.h>等.
我很好奇是否可以使用预处理器通过命令行将实例更改iostream.h为just iostream.我试过附加-Diostream.h=iostreamg ++,但这似乎并没有改变include语句.
我猜测预处理器不可能修改include语句?
#include声明有三种形式.
# include "h-char-sequence" new-line
# include <h-char-sequence> new-line
# include pp-tokens new-line
Run Code Online (Sandbox Code Playgroud)
哪里pp-tokens必须扩展到前两种形式之一.
你可以使用:
#include IOSTREAM
Run Code Online (Sandbox Code Playgroud)
并使用-DIOSTREAM="<iostream>"或-DIOSTREAM="<iostream.h>"取决于您正在使用的编译器版本进行编译.
但是,你不能使用
#include <iostream.h>
Run Code Online (Sandbox Code Playgroud)
并编译-Diostream.h=iostream.
这有几个问题.
iostream.h 不是有效的预处理器宏.#include声明的形式不适合宏观扩张.如果您准备迁移代码库以使用新的C++标头,那么最好使用您喜欢的脚本方法将所有旧式C++标头更改为新的C++标头.