相关疑难解决方法(0)

C++或C中foo(void)和foo()之间有区别吗?

考虑这两个函数定义:

void foo() { }

void foo(void) { }
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?如果没有,为什么void那里的论点?美学原因?

c c++ arguments

243
推荐指数
3
解决办法
7万
查看次数

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

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

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

c void

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

在c:func(void)与func()

当C函数不接受任何参数时,是否必须通过语言规则使用"void"参数声明/定义它?当参数列表中没有任何内容时,PC-Lint似乎有问题,我想知道它是否是我不知道的语言语法中的东西.

编辑:我刚发现一个重复的(后面的傻瓜?它首先出现)问题,C void参数,它有更多的答案和解释.

c lint function void

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

C 中不带参数的函数

    \n
  1. 我知道 \xe2\x80\x9c函数声明符中的空列表不是该函数定义的一部分,指定不提供有关参数数量或类型的信息\xe2\x80\x9e [1]

    \n
    // No information about the parameters is supplied.\nint foo();\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
  3. 我知道 \xe2\x80\x9c函数声明符中的空列表是该函数定义的一部分,指定该函数没有参数\xe2\x80\x9e [2]

    \n
    // In this case the foo() function has no parameters.\nint foo()\n{\n    // ...\n}\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
  5. 我知道 \xe2\x80\x9c类型的未命名参数的特殊情况void作为列表中唯一的项目指定该函数没有参数\xe2\x80\x9e [3]

    \n
    // foo() has no parameters.\nint foo(void);\n\n// bar() has no parameters.\nint bar(void)\n{\n    // ...\n};\n
    Run Code Online (Sandbox Code Playgroud)\n
  6. \n
\n

所以这里有一些问题:

\n
    \n
  1. 合法吗int main() { /* ... …

c signature language-lawyer function-prototypes

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

使用不带参数的向前声明的C函数时,究竟是什么未定义?

摆弄C的旧奇怪兼容行为时,我最终得到了这段代码:

#include <stdio.h>
int f();
int m() {
    return f();
}
int f(int a) {
    return a;
}
int main() {
    f(2);
    printf("%i\n", m());
}
Run Code Online (Sandbox Code Playgroud)

我确定f()in 的调用m()是未定义的行为,因为f()应该只使用一个参数,但是:

  • 在x86上,除非使用GCC和-Wextra-Weverything否则GCC 9.1和clang 8.0.1均不显示任何警告(也不显示in 或其他内容)-O3。然后输出为2,不带-O30,带0。在Windows上,MSVC不会输出任何错误,程序只会输出随机数。
  • 在ARM(Raspberry Pi 3),GCC 6.3.0和clang 3.8.1上,我观察到相同的错误行为,该选项-O3仍输出0,但正常编译会导致GCC为2,而...则为66688。

当出现错误消息时,几乎是您所期望的:(非常有趣,因为a在打印行中没有出现)

foo.c: In function ‘m’:
foo.c:4:9: warning: ‘a’ is used uninitialized in this function [-Wuninitialized]
  return f();
         ^~~
foo.c: In function ‘main’:
foo.c:11:2: warning: ‘a’ is …
Run Code Online (Sandbox Code Playgroud)

c x86 gcc arm clang

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

标签 统计

c ×5

void ×2

arguments ×1

arm ×1

c++ ×1

clang ×1

function ×1

function-prototypes ×1

gcc ×1

language-lawyer ×1

lint ×1

signature ×1

x86 ×1