【发布时间】:2021-12-31 12:16:26
【问题描述】:
请考虑以下代码:
typedef struct Person* PersonRef;
struct Person {
int age;
};
const PersonRef person = NULL;
void changePerson(PersonRef newPerson) {
person = newPerson;
}
由于某种原因,编译器抱怨只读值不可赋值。但是const 关键字不应该使指针变为常量。有什么想法吗?
【问题讨论】:
-
"但是 const 关键字不应该使指针变为 const。"嗯?简短的回答:不要使用 typedef,它们只会让你感到困惑。记住它们,直到你需要它们。
-
@wildplasser:“不要使用 typedefs”不是一个好建议。也许“不要在 typedef 后面隐藏指针”更合适......
-
我不同意。这是一个很好的建议。将结构隐藏在 typedef 后面就像隐藏指针一样令人困惑。它只会污染你的心理命名空间。即使没有语法高亮,我读“struct person *p”也比“pPerson p”更容易、更快。
-
@wildplasser:那你如何应对 C++?
-
@struct wildplasser 如果 struct 你觉得 typdef:ed structs 令人困惑,那么 struct 恐怕你在使用任何 struct 编程语言时都会遇到问题,除了 struct 汇编器。 struct 世界中的其他 struct 程序员显然不同意 struct you。