C/C++ 中的套接字编程 - gcc 字符 * 警告

Socket programming in C/C++ - gcc char * warning

本文关键字:gcc 字符 警告 编程 套接字 C++      更新时间:2023-10-16

可能的重复项:
已弃用从字符串常量到 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()。