const char const *char[] 编译器警告

标签 c arrays pointers char constants

我正在学习 C,但还是有点新手,但我正在学习一些类(class),我收到关于重复“const”声明说明符的编译器警告。

违规行是;

int main(int argc, const char const *argv[])

除非我严重误解了 const 在参数定义中的工作方式,因为 argv 是我需要使用的数组;

int main(int argc, const char const **argv)

或许

int main(int argc, const char *argv[])

编译器不会提示这两个选项中的任何一个,如果我的想法是正确的,那么这两个选项应该会产生相同的结果,因为 *argv[] 是一个指向数组的指针。我意识到如果 argv 不是数组,它们会有不同的含义,但在这种特殊情况下,它们产生相同的结果并且它们是与原始声明相反的正确声明,我错了吗?

最佳答案

在这一行中:

int main(int argc, const char const *argv[])

你写了两次const。一般来说,这是 C 标准允许的,但看起来你的编译器是友好的并且无论如何都会发出警告。您可以忽略或禁用此警告,或删除其中一个 const

然而,main 是特殊的:在这里使用 const 是非标准的。应该是:

int main(int argc, char *argv[])

编译器可能接受也可能不接受带有const 的版本。它们是否这样做是实现定义的,这意味着编译器的文档应该有一个页面讨论它接受哪些 main 的签名。

关于const char const *char[] 编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465375/

相关文章:

javascript - 变量在函数中灰显

ios - 非空数组,访问第一个元素 : index out of range (Swift 2. 0)

c++ - 将 const 指针引用绑定(bind)到非 const 指针

C++:如何检查输入是否只是一个 int?

c - libiconv 将字符串从 'ascii' 转换为 'utf-8'?

java - 从字符串创建 JSONObject

Javascript:将数组元素的地址传递给函数

c++ - (Arduino) 我想创建一个 uint8_t 数组

c - 使用字符串函数在 C 中解析 xml

c - 字符串指针,统计单词中的字母数量