相关疑难解决方法(0)

为什么没有参数的函数(与实际函数定义相比)编译?

我刚刚遇到某人的C代码,我很困惑为什么要编译.有两点我不明白.

首先,与实际函数定义相比,函数原型没有参数.其次,函数定义中的参数没有类型.

#include <stdio.h>

int func();

int func(param)
{
    return param;
}

int main()
{
    int bla = func(10);    
    printf("%d", bla);
}
Run Code Online (Sandbox Code Playgroud)

为什么这样做?我已经在几个编译器中测试过,它运行正常.

c parameters function-parameter function-prototypes

385
推荐指数
8
解决办法
5万
查看次数

使用C void参数"void foo(void)"或不使用"void foo()"更好吗?

什么是更好的:void foo()void foo(void)?随着虚空,它看起来丑陋和不一致,但我被告知它是好的.这是真的?

编辑:我知道一些旧的编译器做了奇怪的事情,但如果我只使用GCC,那void foo()好吗?将foo(bar);随后被接受?

c void

200
推荐指数
6
解决办法
10万
查看次数

为什么空声明适用于带有int参数的定义但不适用于浮点参数?

我认为区别在于declaration没有参数类型......

为什么这样做:

int fuc();

int fuc(int i) {
  printf("%d", i);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但这无法编译:

int fuc();

int fuc(float f) {
  printf("%f", f);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

随着消息:

错误:'fuc'的冲突类型.注意:具有默认促销的参数类型不能与空参数名称列表声明匹配

c function-prototypes function-declaration

12
推荐指数
1
解决办法
1万
查看次数

使用C中带有任意数量参数的函数的参数

我刚才读到:"C void arguments"关于C中这些函数定义之间的差异:

int f(void)
Run Code Online (Sandbox Code Playgroud)

int f()
Run Code Online (Sandbox Code Playgroud)

理解第二种形式意味着一个函数返回带有任意数量参数的整数,我想知道我们如何实际访问和使用这些未知参数

我很想得到示例代码和解释.

另外,我知道的可变参数的在C机构(与va_arg,va_end,va_start函数)和将高兴地听到这个机构和之间的差异f()的形式如上所述.

非常感谢!

c parameters variadic-functions

4
推荐指数
1
解决办法
488
查看次数

功能中标识符列表和参数列表的区别?

对于这个引用:

函数声明符中不属于该函数定义的标识符列表应为空.

标识符列表和参数列表之间有什么区别,有人可以提供此引用的示例.

c declaration function definition

1
推荐指数
1
解决办法
217
查看次数