如果第三方C库需要一个C99复数数组作为参数,那么从C++调用它最简单的方法是什么,在C++中,我的复数使用STL复数类型?我可以将它封装在一个新的c函数中,它接受浮点数并将它们转换为复杂函数,但是有更直接的方法吗?
发布于 2013-01-28 11:48:21
根据C99的说法:
6.2.5/13每种复形类型具有与数组类型相同的表示和对齐要求,数组类型恰好包含对应实类型的两个元素;第一个元素等于复数的实部,第二个元素对应于虚部。
根据C++11的说法:
26.4如果
a
是cv* std::complex<T>*
类型的表达式,而a[i]
表达式是整数表达式i
的a[i]
,那么:
reinterpret_cast<cv T*>(a)[2*i]
应指定a[i]
的真实部分,以及reinterpret_cast<cv T*>(a)[2*i + 1]
应指定a[i]
的虚部这意味着这两种类型具有相同的布局,因此您可以简单地将C函数传递为指向std::complex
数组的指针。
请注意,较早版本的C++不能保证这种布局。
https://stackoverflow.com/questions/14569690
复制相似问题