|
3
|
| R.. GitHub STOP HELPING ICE · 技术社区 · 14 年前 |
|
1
4
让我们反过来问: 为什么会 不 有效吗? . 我真的找不到任何禁止上述代码的参数或规则。在相应的另一个分支中的函数调用永远不会执行(尽管注释中的讨论表明这并不容易!). |
|
|
2
3
C99(6.5.2.2函数调用,第8项)表示,如果函数定义没有原型,则参数和参数的数量和类型“不进行比较”。
我见过这个(ab)在野外与函数指针一起使用。一系列
在这种情况下,编译器没有(合理的)方法提前检查参数的数量,即使它有所有相关的代码。 我认为这是脏代码,我修复了那个特定的实例。 |
|
|
3
2
我同意,只要不正确的函数调用从未被C抽象机求值,它就有效。 不过,还有另一种更简单的方法可以得出关于链接器的结论:既然这是允许的:
链接器必须能够找到
|
|
|
4
0
如果是
|
|
|
5
0
它是有效的(嗯,这可能取决于您使用的标准)。你应该读点关于 calling conventions .
基本上,如果
考虑这段代码:
当然,这是个坏主意。您应该更愿意显式声明所有参数。
你也可以使用
请注意,C++的函数重载可能会导致问题,但我认为这不是一个问题,因为您用问题来标记问题。
|
|
|
Oded S · 带有运算符重载函数的c++17求值顺序 8 年前 |
|
|
Menachem · 如何在解码Base64字符串时处理错误 8 年前 |
|
|
EFanZh · 有符号整数和无符号整数之间的转换 9 年前 |
|
|
nickcoxdotme · 关注点的角度和语义标记/分离 12 年前 |