考虑以下代码:
struct A {
int a;
double b;
int c;
};
extern "C" void fn(A a) {
// do something with a
}
Clang将其编译为以下LLVM代码(仅显示相关部分):
%struct.A = type { i32, double, i32 }
define void @fn(%struct.A* byval align 8) #0 {
ret void
}
为了连接特殊的二进制接口,我需要@fn
的签名像
void @fn(%struct.A)
有什么办法可以做到这一点?
答案 0 :(得分:0)
clang在这里遵循平台ABI以及如何实现参数的实际降低。因此,总的来说,不,您不能期望示例中的任意事情。