微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在cpp中,这个编译为什么会发生?老师说这是因为cpp不是严格类型的语言

如何解决在cpp中,这个编译为什么会发生?老师说这是因为cpp不是严格类型的语言

int main() {
    struct person *p;
    p = NULL;
}

我指的是这个结构化的人,但我没有在任何地方定义它,所以我预计这会产生一些类型定义错误。 它编译吗?它似乎编译。 “cpp 不是严格类型化的语言。所以其他语言可能不会被编译,但 cpp 会。为什么会发生这种情况? 感谢您的帮助和评论

解决方法

它被称为 Elaborated type specifier。详细的类型说明符也 forward declare 类。因此,创建一个指向您尚未定义的类型的指针是有效的,但您不能取消引用该指针或实例化该类,因为它是一个 incomplete type

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。