c++ - 为什么 C++ 禁止声明无类型的参数?

标签 c++ arrays types ambiguity

我希望将以下方法作为任何数组的通用方法,

int arrayLength(`anyType` array[])
{
    return sizeof(array) / sizeof(array[0]);
}

然而,C++ 似乎根本不允许任何类型的歧义,

这是为什么,我应该如何解决它?

最佳答案

因为类型必须被压入堆栈然后弹出,并且一种类型的 sizeof 不等于另一种类型的 sizeof

如果在函数之间在堆栈上传递的类型的大小不是固定的或事先不知道的,编译器如何编译函数?

这个问题的解决方案 - 正如其他人所指出的 - 是模板和宏,它们都动态生成代码 - 然后在编译时依次编译,看起来“解决“问题”,但实际上只是通过将工作转移到编译器上来避免或分散您的注意力。

关于c++ - 为什么 C++ 禁止声明无类型的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978788/

相关文章:

c++ - Python对象到C++指针问题

c++ - 如何使构造函数在两者之间返回?

c++ - 从文件中读取停止工作

c++ - 不能在嵌套类中使用父类——即使嵌套类是在之后定义的

c - 如何将结构的内容保存到 C 文件中?

c++ - 使用 std::array 与数组传递对象数组

types - OpenCL 内核中的自定义类型

java - 为什么Java的sort实现在排序之前先将列表转换为数组?

Python:如何在 if 语句中使用类型函数?

c - 夹板:将非标准类型 `bit` 替换为 `unsigned char`