如何打印 System::Classes::TWndMethod 变量的值?

问题描述 投票:0回答:1

如果我有一个类型为

System::Classes::TWndMethod
的变量,如何使用
*printf
打印任何
%p
类型函数的值?

我尝试转换为

(void*)
但编译器因内部错误而失败。

基本上,我有我要覆盖的三个

WndProc
字段中的
TEdit
。它们都可以进行相同的处理,所以我想看看它们是否都使用相同的
WndProc
(用于回调到原始例程),我认为他们会这样做,但想在实际执行之前检查一下。

c++builder
1个回答
0
投票

您无法使用

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);
© www.soinside.com 2019 - 2024. All rights reserved.