在c ++中定义简单宏时出错

0 c++ macros

我是在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)

Fer*_*yer 7

C预处理器无法按预期方式工作.宏是在扩展一个通,这意味着,预处理器将取代"开始"与"B("和"结束"与")"和得到的结果给编译器.

由于没有第二个预处理过程,因此中间结果"B(2014)"不会被解释为预处理器宏.相反,C++编译器会看到一个函数调用,这不是你想要的.