当我编译第一个代码时,我没有得到任何错误
#include <stdio.h>
void bool_t(void)
{
printf("This is a test\n ");
}
int main()
{
typedef enum bool_t
{
false=0,true=1
} bool_t;
bool_t x = true;
return 0;
}
但是当我编译第二个代码时出现错误
#include <stdio.h>
void bool_t(void)
{
printf("la valeur est ");
}
typedef enum bool_t
{
false=0,true=1
} bool_t;
int main()
{
bool_t x = true;
return 0;
}
错误是
错误:'bool_t' 重新声明为不同类型的符号
我真的很想了解第一段和第二段代码中到底发生了什么,以便更多地了解这两种实现的行为,因为我认为自己是 C 语言的初学者!
最佳答案
在第一种情况下,bool_t
是在函数作用域内声明的,因此它隐藏 来自外部作用域的声明。这很有用,因为这意味着向外部范围添加独立符号不会使您的函数无效。
在第二种情况下,您在同一范围(全局范围)中声明了两次 bool_t
。这是不允许的。
关于c - 当 typedef 是全局而非局部时,为什么定义与函数同名的 typedef 会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768128/