C++宏解释
有人能解释一下下面的代码吗C++宏解释,c++,macros,c-preprocessor,C++,Macros,C Preprocessor,有人能解释一下下面的代码吗 #if 1 // loop type #define FOR_IS_FASTER 1 #define WHILE_IS_FASTER 0 // indexing type #define PREINCREMENT_IS_FASTER 1 #define POSTINCREMENT_IS_FASTER 0 #else // loop type #define FOR_IS_FASTER 1 #define WHILE_IS_FASTER 0 // indexing
#if 1
// loop type
#define FOR_IS_FASTER 1
#define WHILE_IS_FASTER 0
// indexing type
#define PREINCREMENT_IS_FASTER 1
#define POSTINCREMENT_IS_FASTER 0
#else
// loop type
#define FOR_IS_FASTER 1
#define WHILE_IS_FASTER 0
// indexing type
#define PREINCREMENT_IS_FASTER 0
#define POSTINCREMENT_IS_FASTER 1
#endif
#if PREINCREMENT_IS_FASTER
#define ZXP(z) (*++(z))
#define ZX(z) (*(z))
#define PZ(z) (++(z))
#define ZP(z) (z)
#define ZOFF (1)
#elif POSTINCREMENT_IS_FASTER
#define ZXP(z) (*(z)++)
#define ZX(z) (*(z))
#define PZ(z) (z)
#define ZP(z) ((z)++)
#define ZOFF (0)
#endif
我可以理解函数在做什么,但例如
如果我们稍后调用,预处理器如何选择执行哪个ZXP?
1和0代表什么?如果1触发第一组定义,那么将PREINCREMENT设置为1会更快。因此,如果PREINCREMENT\u更快,则触发第一个define ZXP
在这种情况下,1和0没有什么例外。如果if预处理器指令的参数非零,则该指令将成功
通过使用if 0更改文件顶部的if 1,可以切换到备用表单。谢谢@rabidmachine给我的提示。我可能倾向于同意叔叔们的意见,并建议这样做是为了让你不理解它,因为所有这些都是毫无用处的。谢谢!那么,如果我们总是知道我们将执行第一个ZXP,那么有什么必要同时使用它们呢?@rabidmachine:您可以通过将第一行更改为0来切换到使用另一个集合,如果所有操作都可能用于代码混淆。你不应该理解其中任何一点: