gpt4 book ai didi

c - 为什么我们不能将超过 1 个参数正确传递给 extern 函数?

转载 作者:太空狗 更新时间:2023-10-29 15:55:00 25 4
gpt4 key购买 nike

我的程序中有以下代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int print_numbers_above(double x, float y, int z)
{
printf("x=%lf, y=%f, z=%d\n", x, y, z);
}
int main()
{
double x = 1.25;
float y = 1.25;
int z = 3;
print_numbers_below(x, y, z);
print_numbers_above(x, y, z);
return 0;
}
int print_numbers_below(double x, float y, int z)
{
printf("x=%lf, y=%f, z=%d\n", x, y, z);
}

输出:

x=1.25, y=0.000000, z=垃圾

x=1.250000, y=1.250000, z=3

现在,我知道函数 print_numbers_below() 应该早点声明(或者应该在 main 之前定义)。但它不会引发错误。它假定它是一个 extern 函数(并且由于它返回 int,因此不存在任何返回类型冲突)。现在,我不明白为什么我不能正确传递超过 1 个参数?

(我使用的是 Visual Studio 2013)

最佳答案

一个合理的编译器会给你以下错误:

foo.c:12:5: warning: implicit declaration of function 'print_numbers_below' is invalid in C99 [-Wimplicit-function-declaration]
print_numbers_below(x, y, z);
^
foo.c:16:5: error: conflicting types for 'print_numbers_below'
int print_numbers_below(double x, float y, int z)
^
foo.c:12:5: note: previous implicit declaration is here
print_numbers_below(x, y, z);
^

关于c - 为什么我们不能将超过 1 个参数正确传递给 extern 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109151/

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