C++ 里面 typedef struct {...} T 和 struct T {...} 的区别是什么? - 可打印的版本 +- WeHack BBS (https://bbs.wehack.space) +-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html) +--- 版块: 程序设计讨论区 (https://bbs.wehack.space/forum-14.html) +--- 主题: C++ 里面 typedef struct {...} T 和 struct T {...} 的区别是什么? (/thread-173.html) |
C++ 里面 typedef struct {...} T 和 struct T {...} 的区别是什么? - vimacs - 07-06-2020 之前我遇到过一个奇怪的问题,一个函数使用的参数里面有 namespace::T 这样的类型,调用了这个函数的文件编译之后,发现符号里面 namespace:: 被扔掉了,导致了链接出错。 我当时的处理方法是把那个函数声明为 extern "C",但这个应该不适合于要重载的函数或者模板。 几天前又遇到这个问题,然后发现如果把 T 的定义从 typedef struct {...} T 改为 struct T {...},问题就解决了。 奇怪的是,我很难从头写一些这样的代码重现这个问题。 RE: C++ 里面 typedef struct {...} T 和 struct T {...} 的区别是什么? - vimacs - 08-04-2021 今天发现是GCC出问题了: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101774 另外在 C++ 里面写 typedef struct {...} T 实际上是种很糟糕的行为,而且如果这个 struct 里有成员函数的话,代码是不合法的。 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97475 |