1
6
对寄存器参数或函数参数的限制可能如下:
我想不出防止数组参数会有什么问题,但是PJ Plauger在他的书《标准C库》中这样说:
我想很少有人比plauger更了解c库的内部和外部。我希望有人能用一个实际的例子来回答这个特定的问题,我认为这将是一个有趣的琐事。 新信息:
“国际标准编程语言的基本原理-c”这样说
这并不能帮助我限制数组参数。 |
2
3
它不是未定义的。请记住,当参数声明为
我必须承认,我不确定规范中的这个位是什么用途,因为首先不能有函数或数组类型的参数(因为它们会导致指针衰减)。 |
3
2
我找到了另一个相关的引语, from Dinkumware .
很显然,问题是参数的传递方式与声明方式不同。有趣的是,他们也禁止浮动和空头,尽管这些应该得到标准的支持。
作为一个假设,可能是一些编译器在执行
某些(错误的)编译器将返回
|
4
1
我只能猜测
但我对数组/函数的限制一无所知。如果它只在C++标准中,我会冒昧地猜测,存在一个模糊不清的模板匹配场景,其中一个类型的参数之间存在差异。
我的结论是:标准的疏忽。可能的场景:一些标准C编译器实现的类型为
|
5
1
C++ 11表示:
C99也是:
你说:
对,所以你给我们看的两段代码没有区别。都有
那么,在ub方面,为什么两者会有区别呢? 你引用的那篇文章…
…适用于 也不 ,正如所料。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |