windows标准库中的定义不可访问
Definitions in windows standard libraries not accessible
我正在玩web服务示例。我有一个传递给各种函数的错误变量。
WS_ERROR* error = NULL;
我想知道这个错误是怎么造成的。我在WS_ERROR
上按F12
,现在在WebServices.h
上有定义:
typedef struct _WS_ERROR WS_ERROR;
WS_ERROR
是结构_WS_ERROR
。按下_WS_ERROR
上的F12
,继续深入_WS_ERROR
并停止!我无法更深入地了解_WS_ERROR
的定义。为什么?那么,_WS_ERROR
是如何定义的呢?
因为它是一种不透明的类型,即程序员不希望你(出于任何原因)去关注它。
一个伪代码示例:假设一家公司有一个库,他们想让你通过公共API使用,但不想让你知道他们在后台是如何处理的,他们只会给你一个库文件和一个头文件来链接它,例如
-
收割台.h
// Public header to link against something #pragma once typedef struct FakeStruct* FakeStructPtr; // Opaque type DLL_PUBLIC void public_api_function(FakeStructPtr obj);
您将使用API引用中解释的FakeStructPtr
,并将FakeStruct
对象(由其他API函数创建)传递给某些public_api_function
。
在内部,公司可能会做一些类似的事情
// Internals
#include "Header.h"
struct RealDataType {
int realdata1;
float realdata2;
// whatever..
};
void public_api_function(FakeStructPtr obj) {
RealDataType* ptr = reinterpret_cast<RealDataType*>(obj); // Cast to real data
// use the real data through RealDataType..
}
并确保您最终不会查看它们的内部数据类型(除非您使用了一些反转或有人获得了错误的调试构建公共)。
相关文章:
- 如何正确实现和访问运算符的各种自定义枚举器
- 在C++中循环访问自定义结构列表的小问题
- 成员访问是否在空指针上定义C++?
- 如何访问宏中定义的数组元素
- 使(虚拟)函数在大多数派生类中无法访问中间基类中可访问,定义良好?
- 循环访问自定义双链表
- FlatBuffers C++ reinterpret_cast访问实际上是未定义的行为吗?这样做实际上可以吗?
- 错误:未定义对"静脉类型信息::电池访问"的引用
- 有没有办法从Makefile访问VS Code c_cpp_properties.json文件中的定义
- 如何在一个函数中定义一个变量,并在另一个函数中访问和更改它?(C++)
- 访问从联合与另一个成员集复制的联合中的一个成员是否未定义或未指定?
- 为什么c++允许成员函数定义中实例的私有成员访问
- 如何从类中定义的结构访问私有成员?c++
- 威纳派读取自定义文件或文件夹的所有访问权限
- 从模板化类中的子类访问定义
- C++ 访问定义宏数据
- 这是对序列点之间同一对象的多次访问定义良好的行为
- 为什么pre_c_init访问定义的程序段之外的内存
- 如何在c++中访问定义在不同类中的变量
- 如何在多态中访问定义在派生类而不是基类中的函数