擅长:python、mysql、java
<p>回答最后一个问题:</p>
<blockquote>
<p>From the other forum entries on the subject it seems that packed is necessary for this to work once more interesting datatypes are part of the struct. I am not a compiler expert and have never used structure packing myself, but I suspect that whether a structure gets packed or not depends on the compiler settings. Does that mean that someone who compiles numpy without packing structures needs to compile this cython code without the packed?</p>
</blockquote>
<p>Numpy的行为是在运行时而不是在编译时决定的。它将计算一个结构可以需要的最小空间量并分配这些空间块。它不会被任何编译器设置更改,所以应该是可靠的。在</p>
<p>因此,总是需要<code>cdef packed struct</code>来匹配numpy。但是,它不会生成符合标准的C代码。相反,它使用<a href="https://gcc.gnu.org/onlinedocs/gcc/x86-Type-Attributes.html#x86-Type-Attributes" rel="nofollow noreferrer">GCC</a>、<a href="https://msdn.microsoft.com/en-us/library/2e70t5y1.aspx" rel="nofollow noreferrer">MSVC</a>(以及其他)的扩展。因此,它在当前存在的主要C编译器上工作良好,但原则上可能在将来的编译器上失败。看起来应该可以使用C11标准<code>alignas</code>以符合标准的方式实现相同的功能,因此如果需要的话,可以对Cython进行修改。在</p>