【发布时间】:2013-12-13 16:07:20
【问题描述】:
以下函数声明被 gcc 接受,但不被 g++ 接受。
void do_something(char (*)[]);
g++给出的错误是:
error: parameter '<anonymous>' includes pointer to array of unknown bound 'char []'
我相信在 C 中,参数被转换为 char** 这就是 gcc 接受它的原因。
我可以让 g++ 以某种方式接受这个函数吗?
参见示例:http://ideone.com/yqvqdB :)
谢谢!
【问题讨论】:
-
do_something真正想要操作的是什么?它是否希望在char**或char*上运行? -
取决于你想长期使用的编译器?还是您想同时使用两者?
-
您确定这就是您正在编译的确切代码吗?这确实应该等同于
char**,并且g++ 接受它:ideone.com/njdwyc。指向数组的指针看起来像char (*)[]。 -
它正在寻找对 char** 进行操作。从长远来看,g++ :) 谢谢
-
那么为什么不将其声明为
char**并完成它呢? (即使你拥有的是等价的)。