C/C++ 中的套接字编程 - gcc 字符 * 警告
Socket programming in C/C++ - gcc char * warning
可能的重复项:
已弃用从字符串常量到 char * 错误的转换
我正在用 C/C++ 编写一个程序,该程序试图通过 UDP 套接字进行通信。
我正在处理的代码有一个变量 char *servIP
,它是通过 main 函数的输入参数设置的。但是,我希望输入参数是可选的,所以我有代码:
if(argc > 1)
servIP = argv[1]; /* First arg: server IP address (dotted quad) */
else
servIP = "127.0.0.1";
servIP
稍后会转换为更可用于网络的形式。
当我编译它时,我收到一条警告,指出"警告:从字符串常量到 char* 的不推荐使用的转换"。
我认为这不是输入该IP地址的正确方法;什么是更好的方法?
将
servIP
声明为const char *
而不是char *
,或者,如果不可能,strdup("127.0.0.1")
(在第二种情况下,请记住稍后free
它)
修改字符串文本的效果是不确定的,这就是 C++ 将类型"N 常量字符数组"分配给字符串文本的原因。 编译器会警告您从 const 数据类型到非 const 数据类型的转换。
您可以改用 std::string
,然后当您需要指向基础字符的 C 样式指针时,可以使用 std::string::c_str()。
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 奇怪的结构&GCC&clang(void*返回类型)
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- GCC本机矩阵运算库
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- gcc和c++17的过载解析失败
- 避免或警告在 GCC 中从常量字符* 隐式转换为布尔值
- 在 gcc 中显示字符数组不起作用
- C/C++ 中的套接字编程 - gcc 字符 * 警告
- GCC 3.3.4 中的字符数组声明错误