`typedef` 和 `struct` 是 C 函数标准中的吗?
我使用了这样的代码:
void A()
{
typedef struct B B;
struct B
{
};
B b;
};
函数内的 typedef
和 struct
定义。它是用 Clang 编译的,但我想知道 (1) 它们是否是标准的一部分。以及关于(2)它们是否仅限于在功能范围内被识别。
I used some code like this:
void A()
{
typedef struct B B;
struct B
{
};
B b;
};
typedef
and struct
definition inside a function. It compiled with Clang, but I want to know (1) whether they are part of standard or not. And about (2) whether they are limited to be recognized in function scope only.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,标准允许这样做,并且是的,您以这种方式创建的名称仅在函数内部可见(即,它具有本地范围,就像您定义
int i;
,i 时一样
具有本地范围)。这是更常见的,但是这样做是这样的:
Yes, the standard allows this, and yes, the name you create this way is only visible inside the function (i.e., it has local scope, just like when you define
int i;
,i
has local scope).It's more common, however to do it something like this:
是的,这是允许的。
但你不能拥有
函数内的函数。
应该首先完成声明,然后您可以使用实际代码进行声明。
在函数内执行一些操作后无法声明,如下所示
Yes it is allowed.
but you cannot have
function inside a function.
declarations should be done first and later on you can do with your actual code.
you cannot declare after you do some operation inside your function like below