gpt4 book ai didi

复杂跟踪的编译器错误(未声明的标识符/冲突类型/先前的声明)

转载 作者:行者123 更新时间:2023-11-30 19:10:41 24 4
gpt4 key购买 nike

我正在尝试解决这个问题,但遇到了一些错误(在代码下面列出):

#include <stdio.h>

struct foo {
int num;
char *word;
struct foo *ptr;
};

void func2(struct foo *);
void func3(struct foo);

int main() {
a.num = 100;
a.word = "secondword";
func2(&a);
printf("2 %d %s\n", a.num, a.word);

a.ptr = &a;
a.num = 50;
a.word = "mylastword";
func3(&a);
printf("4 %d %s\n", a.num, a.word);
}

void func2(struct foo *a) {
while (*(a->word) != '\0') {
putchar(*(a->word));
a->word++;
}
putchar('\n');
if (a->num % 10 != 0) {
a->num *= 2;
}
a->word--;
printf("num is %d\n", (*a).num);
}

void func3(struct foo *a) {
if ((*a).num == a->ptr->num) {
(*a).num = (*((*a).ptr)).num + 1;
} else {
a->num = 200;
}
a->word = "wordsix";
a->ptr->word = "wordseven";
printf("7th is %d %s\n", (*a).num, (*((*a).ptr)).word);

编译输出: 第 16 行出现错误: - 每个未声明的标识符对于它出现的每个函数仅报告一次 - 'a' 未声明

Lines 42:
-conflicting types for ‘func3’
-previous declaration of ‘func3’ was here)

最佳答案

func3 定义为

void func3(struct foo *a)

但它之前被声明为

void func3(struct foo);

按值获取结构和指向结构的指针是两个截然不同的事情。您忘记在 ) 之前输入 *

请注意,(*a).numa->num 完全相同,但可读性差得多。避免使用这种扭曲的语法使您的代码变得困惑。

关于复杂跟踪的编译器错误(未声明的标识符/冲突类型/先前的声明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005475/

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