我正在尝试安装使用CPP构建的程序。请提供以下错误的建议。
pfm.cpp: In member function ‘void CPfm::read_pcm(std::ifstream&, bool):
pfm.cpp:539:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
sid = mygetline(f,"ID");
^
pfm.cpp:549:29: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
sp0 = mygetline(f,"P0");
^
答案 0 :(得分:2)
这意味着mygetline
采用非const char*
参数,但是您传递的是指向常量字符串文字的指针。这些天这是一个错误;但是你的编译器使用的是过时的规则,在这些规则下它只是被弃用了,所以你只会收到警告。
如果mygetline
没有修改其字符串参数,那么理想情况下,您可以通过在其声明中添加const
来强制执行此操作来解决此问题。然后,正如你所做的那样,将常量传递给它是安全的。否则,您可以忽略或禁用警告,在更新编译器之前不会出现问题。
如果它确实修改了它的参数,那么使它const
不是一个选项,那么就不能将字符串文字传递给它。你需要一个可修改的数组,比如
char bodge[] = "ID";
sid = mygetline(f,bodge);
答案 1 :(得分:0)
那是因为有一个常量字符串而不是char指针作为mygetline
的第二个参数。
但它只是一个警告而不是错误,编译器似乎没问题。