Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理C++;文件以删除ifdef';d输出代码 < >我继承了一段C++代码,它有很多的代码>IFIFF < /C>分支,根据平台来调整行为(代码在当前的形式下是不可读的,因为这些预处理器指令是嵌套的,发生在函数的中间,甚至在多行语句的中间。_C++_C Preprocessor - Fatal编程技术网

如何处理C++;文件以删除ifdef';d输出代码 < >我继承了一段C++代码,它有很多的代码>IFIFF < /C>分支,根据平台来调整行为(代码在当前的形式下是不可读的,因为这些预处理器指令是嵌套的,发生在函数的中间,甚至在多行语句的中间。

如何处理C++;文件以删除ifdef';d输出代码 < >我继承了一段C++代码,它有很多的代码>IFIFF < /C>分支,根据平台来调整行为(代码在当前的形式下是不可读的,因为这些预处理器指令是嵌套的,发生在函数的中间,甚至在多行语句的中间。,c++,c-preprocessor,C++,C Preprocessor,我正在寻找一种方法,以某种方式指定一些预处理器标记,并获取代码的副本,就好像代码已经用这些标记进行了预处理一样。不过,我希望标题保持不变。 例如: #包括 #苹果__ 标准::不能使用。它就是为了这个目的而设计的。我想提一下,这是对我的回答的补充。主要优点是,当与-m一起使用时,它不需要用户取消设置所有他们想要的未定义符号 此代码: #include <iostream> #ifdef __ANDROID__ std::cout << "In Android" <

我正在寻找一种方法,以某种方式指定一些预处理器标记,并获取代码的副本,就好像代码已经用这些标记进行了预处理一样。不过,我希望标题保持不变。 例如:

#包括
#苹果__
标准::不能使用。它就是为了这个目的而设计的。

我想提一下,这是对我的回答的补充。主要优点是,当与
-m
一起使用时,它不需要用户取消设置所有他们想要的未定义符号

此代码:

#include <iostream>

#ifdef __ANDROID__
std::cout << "In Android" << std::endl;
#endif

#ifndef __WIN32
std::cout << "Not a Windows platform" << std::endl;
#endif

#ifdef __APPLE__
std::cout << "In an Apple platform" << std::endl;
#elif __linux__
std::cout << "In a Linux platform" << std::endl;
#endif
使用
unifdef
需要使用

unifdef-D_uuu苹果uuuu安卓uuuuuuuu WIN32-U linux uuuuuuuu示例。cpp

#include <iostream>

#ifdef __ANDROID__
std::cout << "In Android" << std::endl;
#endif

#ifndef __WIN32
std::cout << "Not a Windows platform" << std::endl;
#endif

std::cout << "In an Apple platform" << std::endl;
#include <iostream>

std::cout << "Not a Windows platform" << std::endl;

std::cout << "In an Apple platform" << std::endl;
#包括

你能不能只运行C预处理器。。。(但它的可读性比你想象的要差)要求使用工具在这里不是主题,但是大多数编译器(都?)只支持运行预处理器。例如VisualC++中的选项>代码> /e <代码>(加上选项>代码> /EP<代码>和<代码> /P<代码>,检查它们。我想用g++就是选项
-E
。只需查看编译器的文档即可。@n.m.非常感谢,刚刚测试了它,效果非常好。你介意用示例用法来回答吗?这样我就可以接受了@Cheers and Hth.-Alf我考虑过了,但它不是用
库.h
的内容取代了所有
#include
?那就太难读了。
#include <iostream>

#ifdef __ANDROID__
std::cout << "In Android" << std::endl;
#endif

#ifndef __WIN32
std::cout << "Not a Windows platform" << std::endl;
#endif

std::cout << "In an Apple platform" << std::endl;
#include <iostream>

std::cout << "Not a Windows platform" << std::endl;

std::cout << "In an Apple platform" << std::endl;