我有 2 个文件 - main.c 和 main1.c。
主.c:
#include <stdio.h>
#include <stdlib.h>
void foo(void)
{
}
int main(void)
{
foo();
}
main1.c:
void foo(int a, int b);
我使用 gcc 编译:
gcc main.c main1.c -o main
编译没有错误。如果函数原型(prototype)默认具有外部链接,为什么这可能呢? gcc 不应该给我一个错误,说 foo 是用不同数量的参数重新定义的吗? C 标准在哪里描述了这种行为?
最佳答案
嗯,这是因为您在 main1.c 中的 void foo(int a, int b);
只是一个前向 声明。尚未定义任何内容。
如果将 main1.c 更改为:
void foo(int a, int b) {}
您将看到错误。
关于c - 为什么可以在不同的文件中使用与其原型(prototype)不同数量的参数重新定义函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22076718/