void foo(void* arg)
{
}
int main(int argc, char** argv)
{
foo((void*)1);
return 0;
}
编译器要满足哪些标准来定义传递给foo的整数文字常量的默认大小(以字节为单位)?
答案 0 :(得分:2)
没有。只有函数所期望的参数大小,它显然是指针的大小(i386上为4,x86_64上为8等)。另请参阅calling convention wiki。
答案 1 :(得分:2)
你没有将整数文字常量传递给foo
;您传递的是void *
,其定义为sizeof(void *)
。
更一般地说,如果你将整数常量表达式作为参数传递给函数,那么有两种可能性:
int
传递。 ( caf 正确地指出,这不适用于排名高于int
的整数常量表达式,例如35U
或-17L
。