c - typedef 指针常量怪异

标签 c constants typedef

请考虑以下代码:

typedef struct Person* PersonRef;
struct Person {
  int age;
};

const PersonRef person = NULL;

void changePerson(PersonRef newPerson) {
  person = newPerson;
}

出于某种原因,编译器提示只读值不可分配。但是const关键字不应该使指针成为const。有什么想法吗?

最佳答案

请注意

typedef int* intptr;
const intptr x;

不等于:

const int* x;

intptr 是指向 int 的指针。 const intptr 是指向 int 的常量指针,而不是指向常量 int 的指针。

so, after a typedef pointer, i can't make it const to the content anymore?

有一些丑陋的方式,比如gcc的typeof macro :

typedef int* intptr;
intptr dummy;
const typeof(*dummy) *x;

但是,如您所见,如果您知道 intptr 背后的类型,那是毫无意义的。

关于c - typedef 指针常量怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54102297/

相关文章:

C - 函数参数前的预期声明说明符或 ‘...’

c - Typedef 结构与结构? |定义差异|

c - 我的代码有什么错误吗?我是新手

c++ - 错误 : candidate function not viable: 'this' argument has type 'const' but method is not marked const

为 hashmap 创建可变数量的链表

c++ - 这可能会导致无限循环吗?

qt - QVectors 的 QHash

c - C 中的 typedef 有什么好处?

将文件复制到数组中但不会打印?

在调用另一个宏后不断增加宏的值