【发布时间】:2021-10-12 20:35:34
【问题描述】:
我们有一个宏 {TT(msg)},在该宏中,我们正在调用一个函数,其参数与宏中收到的参数相同,即“msg”。从宏调用的函数需要一个字符串参数。现在假设如果像 TT("argument") 这样调用宏,那么程序正在编译并按预期工作,但是如果我们像 TT("argument" 那么它给出以下编译错误。
main.cpp:14:14: 错误:'const char [4]' 和'int' 类型的无效操作数到二进制'operator
问题的原因:当调用 TT() 宏时,它将直接调用带有参数的 func() API,因为 msg 有一些其他值 "XYZ" func() 无法处理。所以我们需要以某种方式处理这个问题。
#include <iostream>
using namespace std;
#define TT(msg) func(msg);
void func (string msg) {
cout << msg;
}
int main()
{
int i=9;
TT ("XYZ"<<i);
return 0;
}
【问题讨论】:
标签: c++ function macros g++ ostream