我想为 .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 ++用作参数前缀。
由于还有自动扩展的参数,似乎要实现函数标志。
答案 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();
}
我希望这有帮助!