c++ - 函数参数中的预处理器定义

标签 c++ c

我是第一次遇到这种代码。我很难理解它。

#ifndef A
#define A
#endif

#ifndef B
#define B
#endif

void funct (structA* A paramA, structB* B paramB){};

参数中预处理器A和B的作用是什么?

最佳答案

对于:

#define A this_is_a

预处理器会将 A 替换为 this_is_a

对于:

#define A

预处理器会将 A 替换为空。

所以在您的示例代码中,AB 符号只是被丢弃了。人们有时会使用这种技术来注释代码,例如:

#define IN
#define OUT

现在您可以注释函数参数以显示它们是“输入”参数还是“输出”参数:

void my_function(IN int i, OUT int& x) { ... }

关于c++ - 函数参数中的预处理器定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30475904/

相关文章:

c++ - 重载C++中字符数组的赋值运算符

c++ - 从同一个父调用调用不同的子类函数

c++ - GDB:获取确切的内存地址不是 < 地址 0x4 越界 >

c++ - OpenMP 中 std::queue 可以并发插入吗?

从程序内部复制 C 程序的整个 bss 和数据段?

c - TCL不透明 handle C lib

c - 对于全局声明时间函数来说,初始化元素不是常量

java - 如何在 Java 代码中使用 OpenMP?

c++ - gtest : run TEST_P inside 2 TEST_Fs

似乎无法将输入与文本文件中的值匹配