通过QPP实现的Qore函数的参数属性定义

时间:2017-04-23 20:23:37

标签: qore

我想为 .qpp 中实现的(Qore脚本)函数定义CPP __ attribute __ ,并将其预处理为plain .cpp 。 可以从C ++端调用Qore脚本类方法。在这种情况下,空函数在QPP类定义中实现,并在.cpp文件中预处理。 C ++编译器将在编译期间引发警告消息。解决方案是GNU属性unused。在某种程度上可以在.qpp中定义参数属性吗?

MyClass::onAction(int arg0, reference arg1) {
}

在cpp中扩展为:

static QoreValue MyClass_onAction_HashBGD(QoreObject* self, MyClassObject *o, const QoreValueList* args, q_rt_flags_t rtflags, ExceptionSink* xsink) 

注意: ScopeGuard.h 包含#define UNUSED_VARIABLE __attribute__((unused))但qpp语法不支持" normal" C ++用作参数前缀。

由于还有自动扩展的参数,似乎要实现函数标志。

1 个答案:

答案 0 :(得分:2)

我相信这已经实施;查看[doc]qpp.cpp的实施情况;如果在qpp文件中将参数变量声明为[doc],则意味着不会生成该变量的C ++粘合剂,参数变量仅用于文档。

QC_StreamWriter.qpp中的示例:

nothing StreamWriter::printf(string[doc] fmt, ...) {
   sw->f_printf(args, xsink);
}

这将生成以下C ++代码:

// nothing StreamWriter::printf(string fmt, ...){}
static QoreValue StreamWriter_printf_VsVV(QoreObject* self, StreamWriter* sw, const QoreValueList* args, q_rt_flags_t rtflags, ExceptionSink* xsink) {
# 146 "QC_StreamWriter.qpp"
   sw->printf(args, xsink);
   return QoreValue();
}

我希望这有帮助!