gpt4 book ai didi

C++ 宏和命名空间

转载 作者:可可西里 更新时间:2023-11-01 17:37:10 25 4
gpt4 key购买 nike

我在命名空间中使用宏时遇到问题。代码是

#include <iostream>

namespace a
{
#define MESSAGE_A(message) \
std::cout << (message) << std::endl;
}

#define MESSAGE_A(message) \
std::cout << (message) << std::endl;

int main()
{
//works fine
MESSAGE_A("Test");
//invalid
a::MESSAGE_A("Test")
return 0;
}

在宏中使用命名空间对象的正确变体是什么。

最佳答案

宏由预处理器处理,它对命名空间一无所知。所以宏没有命名空间,它们只是文本替换。确实不鼓励使用宏,原因之一是它们总是会污染全局命名空间。

如果您需要打印一条消息,并且需要将其命名空间化,只需使用内联函数即可。代码看起来很简单,可以适本地内联:

namespace a
{
inline void MESSAGE_A(const char* message)
{
std::cout << message << std::endl;
}
}

关于C++ 宏和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15002550/

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