`typedef` 和 `struct` 是 C 函数标准中的吗?

发布于 2024-10-30 19:57:19 字数 238 浏览 2 评论 0原文

我使用了这样的代码:

void A()
{
    typedef struct B B;
    struct B
    {

    };

    B b;
};

函数内的 typedefstruct 定义。它是用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

新雨望断虹 2024-11-06 19:57:19

是的,标准允许这样做,并且是的,您以这种方式创建的名称仅在函数内部可见(即,它具有本地范围,就像您定义 int i;, i 时一样 具有本地范围)。

这是更常见的,但是这样做是这样的:

typedef struct { 
    /* ... */ 
} B;
B b;

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:

typedef struct { 
    /* ... */ 
} B;
B b;
猥︴琐丶欲为 2024-11-06 19:57:19

是的,这是允许的。
但你不能拥有
函数内的函数。

应该首先完成声明,然后您可以使用实际代码进行声明。

在函数内执行一些操作后无法声明,如下所示

void A()
{

int a=0;

a++;    

typedef struct B B;//this is wrong
    struct B
    {

    };

    B b;
};

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

void A()
{

int a=0;

a++;    

typedef struct B B;//this is wrong
    struct B
    {

    };

    B b;
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文