我是在c ++中使用宏的新手.我写了一个短宏,我不知道它有什么问题.请帮忙.
#include <iostream>
using namespace std;
#define start B(
#define end )
#define B(x) cout<<x;
int main (int argc, char *argv[])
{
start 2014 end
}
Run Code Online (Sandbox Code Playgroud)
C预处理器无法按预期方式工作.宏是在扩展一个通,这意味着,预处理器将取代"开始"与"B("和"结束"与")"和得到的结果给编译器.
由于没有第二个预处理过程,因此中间结果"B(2014)"不会被解释为预处理器宏.相反,C++编译器会看到一个函数调用,这不是你想要的.