gpt4 book ai didi

c++ - 函数中的前向声明

转载 作者:太空宇宙 更新时间:2023-11-04 03:58:50 24 4
gpt4 key购买 nike

我在函数中使用前向声明时遇到问题。通常在全局范围内,我们可以使用使用 extern 关键字声明的 undefined variable 的地址。看这个简单的例子。

typedef struct Id {
int a;
} xIdRec;

typedef xIdRec* IdN;

typedef struct ChId{
int a;
IdN* b;
} ChIdRec;

extern ChIdRec Evn;
IdN Arr[] = {(IdN)&Evn};
ChIdRec Evn = {8, Arr};

但是我如何在函数定义期间使用这段代码呢?我们可以尝试这样使用它。

void F (){
typedef struct Id {
int a;
} xIdRec;

typedef xIdRec* IdN;

typedef struct ChId{
int a;
IdN* b;
} ChIdRec;

extern ChIdRec Evn;
IdN Arr[] = {(IdN)&Evn};
ChIdRec Evn = {8, Arr};
}

但是现在我们有一个错误 — error C2086: 'ChIdRec Evn' : redefinition。我们可以删除 Evn 的第一个声明,但我们会遇到另一个错误 — error C2065: 'Evn' : undeclared identifier

如何解决这个小问题?

最佳答案

不要在函数内部重复定义类型。特别是 typedef 使得这是一个新标识符,即使它与全局标识符具有相同的名称和含义。

关于c++ - 函数中的前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822764/

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