【问题标题】:Prevent assignment of a type in C防止在 C 中分配类型
【发布时间】:2013-07-15 11:27:00
【问题描述】:

给定一个 C 函数:

void f(T x, T y) {
    x = y;
}

我想确保 T 分配的所有实例都将失败。到目前为止,我最好的解决方案是:

#define T const void *

有没有更好的解决方案? (理想情况下,我希望将 T 定义为某种不可分配的不透明记录指针类型)。

【问题讨论】:

  • 你想确保你的函数不会编译吗?
  • 不清楚你想要什么。你想让x = y 产生编译错误吗?还有什么?您只想影响f 功能吗?或者这应该是一些全球行为吗?使用const void* 是如何实现的?

标签: c assignment-operator strong-typing noncopyable


【解决方案1】:

typedef 更适合这里。

对于不可变数据:typedef const void * T;

对于不可变指针:typedef void * const T;

【讨论】:

  • @tohava 您希望指针为 const 或指向的数据。这是2个不同的东西。你使用#define的方式你需要第一个。
  • 我添加了一个澄清,对不起我的错误。
【解决方案2】:

我犯了一个愚蠢的错误。显然,

typedef const int T 

typedef void * const T

可以很好地防止分配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2021-11-04
    相关资源
    最近更新 更多