我想用 Cython 访问的一些标准 C 库有很多标志。Cython 文档声明我必须复制我需要的标头部分。当涉及到函数定义时,这很好。它们通常在任何地方复制,包括文档。但是那些神奇的数字呢?
如果我想调用mmap
,我总是可以找到函数定义并将其粘贴到 .pxd 文件中:
void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)
但是调用它需要大量的标志,比如PROT_READ
,MAP_ANONYMOUS
等等。我对此至少有两个问题:
首先,寻找这些数字的确切定义位置是一件烦人的工作。事实上,我宁愿写一个 .c 文件并打印我需要的值。有没有更好的方法来查找给定标志的值,例如PROT_READ
?
其次,这些数字有多稳定?在提取了我需要的所有值并将它们硬编码到我的 Cython 源代码之后,在不同平台上编译的机会有多大,比如说PROT_READ
和PROT_EXEC
?
即使答案是没有好的或适当的方法来做到这一点,我也想听听。只要我知道我没有遗漏任何东西,我总是可以接受有些东西很麻烦。