opaque-pointers相关内容
在设计 C 接口时,通常只让用户程序知道的内容进入公共接口 (.h). 因此,例如,如果用户程序不需要知道结构的内部组件,则它们应该保持隐藏.这确实是一种很好的做法,因为结构的内容和行为将来可能会发生变化,而不会影响界面. 实现该目标的一个好方法是使用不完整类型. typedef struct foo opaqueType; 现在可以构建一个只使用指向 opaqueType
..
我已经看到以下两种在 C API 中声明不透明类型的风格.在 C 中声明不透明结构/指针的各种方法是什么?使用一种风格比使用另一种风格有什么明显的优势吗? 选项 1 //foo.htypedef struct foo * fooRef;void doStuff(fooRef f);//foo.c结构 foo {整数 x;输入 y;}; 选项 2 //foo.htypedef 结构 _f
..
我可以知道 C 中不透明指针概念背后的用法和逻辑吗? 解决方案 不透明指针是一种不显示底层数据细节的指针(来自字典定义:opaque:形容词;无法看到通过;不透明). 例如,您可以在头文件中声明(这是我的一些实际代码): typedef struct pmpi_s *pmpi; 它声明了一个类型pmpi,它是一个指向不透明结构struct pmpi_s的指针,因此任何你声明为pm
..
我正在尝试使用不透明数据类型来了解它们.主要问题是我不断收到“不完整"错误. main.c #include #include #include "blepz.h"int main(){setfnarp(GOO,5);int loogaboo = getfnarp(GOO);printf("%i", loogaboo);返回0;} fnarpishnoop.c #include "
..
我目前对 C 结构的信息隐藏概念有些困惑. 这个问题的背景是一个嵌入式 c 项目,对 OOP 的了解几乎为零. 到目前为止,我总是在相应模块的头文件中声明我的 typedef 结构.所以每个想要使用这个结构体的模块都知道结构体类型. 但经过 MISRA-C 检查后,我发现了中等严重性警告:MISRAC2012-Dir-4.8- 结构的实现不必要地暴露给翻译单元. 经过一番研
..
我已经定义了一个不透明的结构和相关的 API,如下所示: typedef struct foo foo;foo *create_foo(...);delete_foo(foo *f); 我无法在我的 c 文件中定义结构.给出重新定义错误. typedef struct foo {int 实现;}foo; 我可以在没有 typedef 的情况下在 c 文件中使用 foo 但我想要 typed
..
我已经看到了以下两种在C API中声明不透明类型的样式.在C中声明不透明结构/指针的各种方法是什么?使用一种样式比使用另一种样式有明显的优势吗? 选项1 //foo.htypedef struct foo * fooRef;void doStuff(fooRef f);//foo.cstruct foo {int x;int y;}; 选项2 //foo.htypedef struc
..
我正在Xcode中使用Swift,并且收到以下错误:-类型'Category'(又名'OpaquePointer')的值没有成员'name'-我到处都看过但我可以找不到解决方案。 有人知道该怎么做吗? 以下是屏幕截图: 感谢您的帮助! 解决方案 类别未提供名称属性
..
有人对“不透明类型”有什么好的解释吗?我在 CFBundleRef 的上下文中看到了这个术语,他们在这里说:“CFBundleRef opaque type”。这是一种只读的类型吗? 解决方案 “opaque类型”是一种你没有完整定义的类型 struct 或 class 。在C,C ++和Objective-C中,您可以告诉编译器稍后将使用前向声明定义类型: //在C,C ++和O
..
此问题的答案解释了不透明的指针是在Objective C ++标头中包含C ++成员变量的好方法。我试图按照这个例子时遇到编译错误。这是我标题中的相关代码,相应的编译器错误显示为注释: struct ADSR_opaque; //错误:'struct ADSR_opaque'的前向声明 @interface LoopyPulser:NSObject { float _pulse
..
这个问题涉及到编码ISO C99的MISRAC如下:2012指南 我要寻找指导目录4.8结合迪尔4.12“如果一个指向结构或联合从来都不是一个翻译单元内的间接引用,那么对象的实现应该被隐藏”,“动态内存分配不得拿来主义“。 当用C实现一个抽象数据类型,通常使用的句柄是指向一个结构描述ADT的内部状态来指ADT。这可以用一个不透明的指针按目录4.8与内部细节保持对用户隐藏的利益来完成。 一般来
..
我正在考虑实现在C语言中一个简单的界面模式。 一个关键特征是,它会提供多个定义为通过接口的公共头供给的不透明内在张力结构,也就是,不同的实现将为该结构(因此在不同的转换单元提供不同的垫层数据,相同的结构将具有不同的实现)。 我找不到任何引用是否这将是一个好或坏的设计模式。至少它似乎并不违反严格别名规则,只有依靠一致的顺序和填充为共同的第一个元素(S),它是由C标准保证的(据我看到的)。当然
..
C99 - 特别6.2.6.1节,第4段 - 指出,复制对象重新presentation成unsigned char型数组是允许的: 结构{ INT富; 双条; }巴兹; unsigned char型字节[sizeof的巴兹]//做事与巴兹结构。的memcpy(字节,&安培;巴兹,sizeof的字节);//做事情的字节数组。 我的问题:我们能不能避免额外的内存分配,并通过
..
在设计C接口,它是常见的让到公共接口( .H ),需要由用户程序只知道是什么。 因此,例如,结构的内部部件应保持如果用户程序不需要知道它们隐藏。这的确是很好的做法,因为结构可能会在未来改变的内容和行为,而不影响接口。 一个伟大的方式来实现这一目标是使用不完全类型。 typedef结构美孚opaqueType; 现在只用指针 opaqueType 的接口可以建立,而用户程序永远需要知
..
有很多问题在那里大约向前声明和不透明的类型,但大多数似乎是从库作者的角度,还是人们试图使用不完全类型没有指针或一些这样的。 我使用的接口接受/返回 FOO * 指针库。我想证实,我不能(或不应该)在某种程度上前瞻性声明中的 FOO 或 FOO * 我的头文件(其中定义了 FOO * 成员的结构)。 我知道我可以只的#include< library.h> 在我的头和我的.c文件两者
..
很多时候的malloc()编程的嵌入式系统时是绝对不允许的。大部分时间我pretty能够解决这个问题,但有一件事让我恼火:它让我使用所谓的“不透明类型”,以使数据隐藏。通常,我会做这样的事情: //在module.h中的文件 typedef结构为handle_t为handle_t;为handle_t * create_handle(); 无效operation_on_handle(为handl
..
我见过两个下列两种风格用C API的声明不透明类型。是否有任何明显的优势,使用一种风格比其他? 选项1 // foo.h中 typedef结构美孚* fooRef; 无效doStuff(fooRef F);// foo.c的 结构foo的{ INT X; 诠释Ÿ; }; 选项2 // foo.h中 typedef结构_foo富; 无效doStuff(富* F);// f
..