gpt4 book ai didi

C++ 预处理器串联操作

转载 作者:太空狗 更新时间:2023-10-29 23:44:12 26 4
gpt4 key购买 nike

我想使用 C++ 预处理器连接器。

#include <iostream>
#include <string>

#define GetBlack(colorName) (color.##colorName)

struct Color
{
int black = 0;
};

int main()
{
Color color;
int c = color.black;
int d = GetBlack(black);
}

我得到的错误是

5:35: error: pasting "." and "black" does not give a valid preprocessing token
16:11: note: in expansion of macro 'GetBlack'

C++外壳:
http://cpp.sh/3547x

有什么建议吗?

最佳答案

您实际上并不需要此处的串联。您只是将预处理“ token ”粘贴到位,所以只需使用:

#define GetBlack(colorName) (color.colorName)

宏参数名称 colorName 被扩展到位。然后

int d = GetBlack(black);

将扩展到

int d = color.black;

连接用于将两个“标记”合并为一个,请参阅 here .

例如,如果成员名为 black_value,但您只想调用 GetBlack(black),则宏定义类似于:

#define GetBlack(colourName) colour.colourName##_value;

关于C++ 预处理器串联操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com