相关疑难解决方法(0)

不透明的C结构:它们应该如何声明?

我已经看到以下两种在C API中声明不透明类型的样式.使用一种风格而不是另一种风格有明显的优势吗?

选项1

// foo.h
typedef struct foo * fooRef;
void doStuff(fooRef f);

// foo.c
struct foo {
    int x;
    int y;
};
Run Code Online (Sandbox Code Playgroud)

选项2

// foo.h
typedef struct _foo foo;
void doStuff(foo *f);

// foo.c
struct _foo {
    int x;
    int y;
};
Run Code Online (Sandbox Code Playgroud)

c struct coding-style typedef opaque-pointers

46
推荐指数
2
解决办法
3万
查看次数

Typedefing指针类型

我一直在阅读SO,并遇到了以下问题,这些问题涉及为什么typedefing指针类型不好.

不透明的C结构:它们应该如何声明?Const-correctness和不可变的分配对象

我想知道是否有人可以扩展并解释为什么typedefing指针类型很糟糕,并且可能提供一些可能发生错误的示例.

另外,如果typedefing指针类型确实是禁忌,那么为什么Win32 API会这样做呢?在Win32 HANDLE(和有效的句柄类型)中,typedef为a void *.

c c++ pointers typedef

4
推荐指数
2
解决办法
519
查看次数

标签 统计

c ×2

typedef ×2

c++ ×1

coding-style ×1

opaque-pointers ×1

pointers ×1

struct ×1