【发布时间】:2019-12-04 12:32:43
【问题描述】:
我有一些自动生成的 C++ 代码来包装一些 C 代码。
C 代码具有可预测的结构,但它具有/没有特定功能。
由于 C++ 代码是从没有此信息的描述中派生的。我想使用模板处理器来决定是否可以调用这个函数。
小例子:
struct SomeStruct{
int indicatorMember;
};
extern "C" void someFun(struct SomeStruct* somePointer){
}
void someCPPcode(){
SomeStruct s;
// do something
someMechanismToCall_someFunIfExists(&s);
// do something other
}
someMechanismToCall_someFunIfExists 的外观如何,以便在someFun 确实存在且不存在的情况下可以编译/运行一些CPPcode?p>
这可能吗?
如果某个成员是结构的一部分,也可以确定该函数是否存在。
所以,如果indicatorMember确实存在,那么该函数也存在。
【问题讨论】:
-
如果你的 C++ 代码是自动生成的,你不能在生成器本身中包含这个逻辑吗? IE。仅当它可以在 C 源代码中找到函数时才生成调用。
-
您可能会在此链接中找到一些提示:how-to-check-if-the-function-exists
-
如果您有一些结构指标方法/字段,那么链接问题中有 SFINAE 方法。
-
@DanM。生成器不知道 c 源。它使用不包含此信息的定义语言