如果我有一个类型为
System::Classes::TWndMethod
的变量,如何使用 *printf
打印任何 %p
类型函数的值?
我尝试转换为
(void*)
但编译器因内部错误而失败。
基本上,我有我要覆盖的三个
WndProc
字段中的 TEdit
。它们都可以进行相同的处理,所以我想看看它们是否都使用相同的WndProc
(用于回调到原始例程),我认为他们会这样做,但想在实际执行之前检查一下。
您无法使用
TWndMethod
按原样打印出 %p
,因为它不是单个指针,它实际上是一个包含 2 个指针的结构体。
如果要打印出来,请先将
TWndMethod
转换为 System::TMethod
,然后就可以打印出其 Code
和 Data
字段,其中:
Code
字段指向类方法本身
Data
字段指向传递给方法的隐藏this
参数的对象。
例如:
TWndMethod wm = ...;
TMethod &m = reinterpret_cast<TMethod&>(wm);
printf("%p %p\n", m.Code, m.Data);