【问题标题】:Pointer to array of unknown bound? [duplicate]指向未知边界数组的指针? [复制]
【发布时间】: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** 并完成它呢? (即使你拥有的是等价的)。

标签: c++ c gcc g++


【解决方案1】:

GNU GCC 编译器使用非标准编译器来编译程序。添加此标志-std=c99-std=iso9899:1999 以将您的程序编译为标准输入,您将收到错误。

在标准情况下,这将始终被接受为指向数组的指针,因此您必须提供数组的长度,因为它是指针算法所必需的。

【讨论】:

  • 那是错误的。在标准 C 语言中,char (*)[] 是一个完全有效的参数声明。
猜你喜欢
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 2021-02-07
  • 2012-11-17
  • 2016-07-30
相关资源
最近更新 更多