我知道这种类型与不透明数据类型的全部问题有关,我需要进入fpos_t
并查看其真正含义(在任何人说什么之前,我知道使用该信息是错误的,因为代码可能会在以后更改。我不需要此程序,而是需要此程序来消除好奇心。
不过,我不知道该怎么办;关于不透明值的大多数信息似乎都在谈论隐藏信息的概念,但很少提供有关信息内部机制以及如何撤消信息的指示。
答案 0 :(得分:3)
除非您已经有了源代码,否则没有在不知道特定系统上基础表示的线索的情况下“侵入”不透明类型的可行方法。破解它需要在运行时跟踪每次对不透明指针的访问,然后查看它的去向,然后从那里开始猜测。
相反,您可以使用Google,例如Github上的glibc源。在stdio.h中,有一个条件typedef指向内部标头中的__fpos_t
或__fpos64_t
:
typedef struct _G_fpos_t
{
__off_t __pos;
__mbstate_t __state;
} __fpos_t;
typedef struct _G_fpos64_t
{
__off64_t __pos;
__mbstate_t __state;
} __fpos64_t;
不太令人兴奋,但是您可以从Github继续跟踪那些不同的类型,然后看看它们到底是什么。整数和枚举很有可能。
答案 1 :(得分:1)
在VC ++中,它定义为
typedef __int64 fpos_t;
依次是
typedef long long fpos_t;
如果您想知道它在汇编代码中的外观,那么只需编写示例程序并在调试模式下运行它,然后在调试时打开Disassembly Window
来查看后面的代码。