gpt4 book ai didi

c++ - typedef 没有替换为数据类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:44 25 4
gpt4 key购买 nike

我对下面这段代码感到惊讶,

#include<stdio.h>
typedef int type;

int main( )
{
type type = 10;
printf( "%d", type );
}

这样就完成了,程序的输出是 10。

但是当我如下略微更改代码时,

#include<stdio.h>
typedef int type;

int main()
{
type type = 10;
float f = 10.9898;
int x;
x = (type) f;
printf( "%d, %d", type, x);
}

在 aCC 编译器中:

"'type' is used as a type, but has not been defined as a type."

在 g++ 编译器中:

"error: expected `;' before f"

在第二种情况下,编译器是否无法识别模式,因为这种模式可能与变量的赋值、表达式的求值等有关,而在第一种情况下,因为这种模式仅在定义变量时使用编译器识别了它。

最佳答案

typedef 标识符和变量名一样,也有范围。之后

type type = 10;

变量 type 隐藏类型名称 type。例如这段代码

typedef int type;
int main( )
{
type type = 10;
type n; //compile error, type is not a type name
}

因为同样的原因不会编译,在C++中,你可以使用::type来引用类型名:

typedef int type;
int main( )
{
type type = 10;
::type n; //compile fine
}

关于c++ - typedef 没有替换为数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19311026/

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