Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
int main () { int arr[2][3]; foo (arr); return 0; } void foo(int (*arr)[3]) { **arr = 0; }
你好,
在 Keil 中,上面的代码对 foo 的调用给出了警告 C182,它在 foo 的定义中给出了警告 c235。但它似乎在 VC++ 中运行良好。任何想法为什么以及如何解决?
谢谢!
为函数提供一个原型,以便编译器知道调用时发生了什么:
void foo(int (*arr)[3]); int main () { int arr[2][3]; foo (arr); return 0; } void foo(int (*arr)[3]) { **arr = 0; }
如果没有原型,编译器必须对传递的参数和函数返回的内容做出假设。根据编译器的版本和编译器设置,编译器可能会也可能不会发出警告。