标签: c++ parameters macros c-preprocessor
此代码:
#define DEREF(ptr) (*ptr) MyClass *pClass = new MyClass; DEREF(pClass).foo(); // equivalent of (*pClass).foo() or simply pClass->foo()
我是否可以将#define宏配置为接受ptr参数作为宏后面的单词而不是括号语句,以便我可以执行以下操作?:
#define
DEREF pClass.foo();
答案 0 :(得分:4)
不,C宏只能接收括号'()'
答案 1 :(得分:4)
我可以配置#define宏来接受ptr参数作为宏之后的单词
我可以配置#define宏来接受ptr参数作为宏
没有。但是,您可以编写自定义代码预处理器,在将代码传递给C ++编译器之前对其进行转换。这不是很简单或实际,但可以做到。 moc中的qt 4以这种方式运行 - 扫描自定义关键字并用编译器可以接受的C ++语句替换它们。这允许Qt 4实现其“信号/时隙”机制。