有没有办法确保创建时的struct对象始终是指针?
例如:
typedef struct
{
int foo;
} blah;
blah a; // error
blah* b; // ok
Run Code Online (Sandbox Code Playgroud)
当然 - 你只需要隐藏struct自己的翻译单元的定义,远离窥探.然后,在其他地方(以及更多公共场所),只需向前声明结构:
typedef struct x blah;
Run Code Online (Sandbox Code Playgroud)
blah在这种情况下是一个不完整的类型,因此任何只能访问该声明的人只能创建blah *对象,而不能创建完整的blah对象.
另一种选择是更改你的typedef:
typedef struct
{
int foo;
} *blah;
Run Code Online (Sandbox Code Playgroud)
现在,blah本质上是一个指针类型,以及任何声明:
blah b;
Run Code Online (Sandbox Code Playgroud)
实际上只创建一个指针.由于它struct本身是匿名的,除了通过指针之外没有办法创建一个typedef.
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |