gpt4 book ai didi

c++ - Typedef 更改行为导致错误和警告

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:43 25 4
gpt4 key购买 nike

以下是一些关于 typedef 修改的实验,我无法理解第 2 行和第 6 行。为什么 2 和 5 给出不同的结果?请给我一些说明。

typedef long _long;
extern _long tl; //1 Fine...OK
extern _long int tli; //2 extraneous `int' ignored...??
extern int _long til; //3 `_long' does not name a type...OK
extern long l; //4 Fine...OK
extern long int li; //5 Fine...OK
extern int long il; //6 Fine...??

最佳答案

您正在尝试以类似于宏的方式使用 typedef,但这不是它们的工作方式。

当您typedef long _long 时,表达式_long int 不会扩展为long int,它只会成为一个编译器错误,因为longint成为变量的两种类型。

您可以对此类类型应用 cv 限定,例如:

extern const _long foo;

或者:

volatile _long bar;

如果你想让某些东西实际上是一个long int,你可以为它设置一个typedef:

typedef long int MyLongInt;

另外,顺便说一句,不要使用前导下划线命名您的 typedef。该标准保留了许多带有前导下划线的名称。参见 this获取更多信息。

关于c++ - Typedef 更改行为导致错误和警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17614390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com