0

我正在了解更多关于 Pythons ctypes 模块的信息,并且注意到了一个我不知道如何解释的奇怪之处。

在 Windows (Python 2.7.4) 上,返回以下内容:

>>> from ctypes import *
>>> c_char_p("Hello World!")
c_char_p('Hello World!')

而在 OSX (Python 2.7.2) 上,返回以下内容:

>>> from ctypes import *
>>> c_char_p("Hello World!")
c_char_p(4479401388)

此外,在 OSX 上,c_char_p("Hello World!")每次运行时都会返回不同的数值。

有人可以解释一下为什么会发生这种情况吗?

4

1 回答 1

2

查看源代码__repr__只会显示字符串的内容,如果

  1. 它在 Windows 上运行;和
  2. IsBadStringPtr返回TRUE

如果可能的话,他们可能想显示一个字符串表示,因为这是一个相当有用的东西,但如果它指向意外的地方,不要让你的程序崩溃。IsBadStringPtr仅存在于 Windows 上,需要进行第一次检查。坦率地说,我很惊讶他们会使用它,因为它被清楚地标记为已过时,并且有充分的理由

于 2013-07-16T02:31:11.950 回答