【发布时间】:2022-10-14 03:00:11
【问题描述】:
嘿,我是一名学习 C 编程的学生,只是想知道为什么该程序编译为在线 struct date *newdate, foo(); foo 被声明为具有返回类型结构日期的主函数的本地函数。由于 foo 已经被声明为函数,它应该给出类型冲突的错误,因为 c 不支持函数重载。有人能帮帮我吗。
#include <stdio.h>
#include <stdlib.h>
struct date {
int month;
int day;
int year;
};
struct date foo(struct date x) {
++x.day;
return x;
};
int main() {
struct date today = {10, 11, 2014};
int array[5] = {1, 2, 3, 4, 5};
struct date *newdate, foo();
char *string = "test string";
int i = 3;
newdate = (struct date *)malloc(sizeof(struct date));
newdate->month = 11;
newdate->day = 15;
newdate->year = 2014;
today = foo(today);
free(newdate);
return 0;
}
【问题讨论】:
-
有哪些错误?
-
它不会产生任何错误我只是想知道为什么它不会产生错误,因为在第 19 行还有另一个 foo() 声明。 :)
标签: c