gpt4 book ai didi

c - 无复制类型注解

转载 作者:行者123 更新时间:2023-12-05 06:51:04 25 4
gpt4 key购买 nike

在 C 中,如果一个结构包含一个 futex 或出于任何原因对复制或移动到一个新地址没有意义,是否有任何方法(类型注释或其他东西)来限制/警告用户不小心复制那些对象?

最佳答案

您确实可以对不透明类型和私有(private)封装做类似的事情。

something.h

typedef struct something something; // forward declaration, incomplete/opaque type

something* something_create (void);
void something_dostuff (something* obj);

something.c

#include "something.h"

struct something { ... }; // actual definition, only visible privately in this file

something* something_create (void)
{
something* result = malloc( sizeof *result );
...
return result;
}

void something_dostuff (something* obj)
{
/* do stuff on the object */
}

caller.c

#include "something.h"

something* st = something_create();
something_dostuff(st);

当然,这并不能阻止调用者故意进行肮脏的黑客攻击,例如对指向的数据进行疯狂的memcpy。但是它可以阻止一个理智的应用程序程序员错误地做事,这应该是这个的目的。

关于c - 无复制类型注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66272205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com