C++ 枚举类型声明可以放在 int main 的前面吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 枚举类型声明可以放在 int main 的前面吗?相关的知识,希望对你有一定的参考价值。
可以啊,只是类型声明将会是全局变量.解释 全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。 例如:
int a,b; /*外部变量*/
void f1() /*函数f1*/
……
float x,y; /*外部变量*/
int fz() /*函数fz*/
……
main() /*主函数*/
……
/*全局变量x,y作用域 全局变量a,b作用域*/
从上例可以看出a、b、x、y 都是在函数外部定义的外部变量,都是全局变量。但x,y 定义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。 a,b定义在源程序最前面,因此在f1,f2及main内不加说明也可使用。
全局变量是使用相同的内存块在整个类中存储一个值. 参考技术A 可以的
为啥枚举数据类型总是在 c 中的 main() 之外声明?
【中文标题】为啥枚举数据类型总是在 c 中的 main() 之外声明?【英文标题】:Why is enum data type always declared out of main() in c?为什么枚举数据类型总是在 c 中的 main() 之外声明? 【发布时间】:2018-09-09 11:22:09 【问题描述】:为什么在 main() 函数中声明 enum 数据类型? 如果我们在 main() 中声明 enum 数据类型会发生什么?
https://www.geeksforgeeks.org/enumeration-enum-c/
【问题讨论】:
与您通常在函数之外声明struct
类型的原因相同。
是的 - 他们通常需要比 main 更大的范围。
通常是因为你有一个比单个函数大的程序,并且你想在几个不同的函数中使用enum
。
【参考方案1】:
枚举不必具有文件范围。枚举可以在块范围内声明。
这是一个演示程序。
#include <stdio.h>
enum E1 N = 10 ;
int main(void)
int a[N];
enum E1 N = 2 * N ;
int b[N];
printf( "sizeof( a[] ) = %zu\n", sizeof( a ) );
printf( "sizeof( b[] ) = %zu\n", sizeof( b ) );
return 0;
它的输出是
sizeof( a[] ) = 40
sizeof( b[] ) = 80
考虑到根据 C 标准(6.2.1 标识符范围)
7 结构、联合和枚举标记的范围仅开始于 在标记出现在声明的类型说明符中之后 标签。 每个枚举常量的作用域都在 其定义枚举数在枚举数列表中的外观。 任何 其他标识符的范围在完成之后开始 它的声明者。
当枚举需要文件范围时,通常在函数外部声明枚举,即在多个函数中使用相同的枚举时,例如在参数声明列表中。
【讨论】:
以上是关于C++ 枚举类型声明可以放在 int main 的前面吗?的主要内容,如果未能解决你的问题,请参考以下文章