我试图在一些公开的线性代数代码中使c函数起作用。
公开的原型是......
int ilaenv_(int *, char *, char *, int *, int *,int *, int *);
公开可用的代码具有函数调用...
nb = ilaenv_(&c__1, "DGEQRF", " ", m, n, &c_n1, &c_n1);
其中m,n,c_1和c_n1是整数,
错误信息是。
C++ 11 does not allow conversation from string literal to char *.
我没有创建代码,而是从LAPACK网站下载代码。我不愿意对可能有效的公开代码进行太多更改,以免引入错误。但是,此错误出现在我正在处理的程序中的许多函数中。
我该如何解决这个问题?
答案 0 :(得分:6)
为安全起见,您可以创建初始化为相同值的char
数组,例如:
char dgeqrf[] = "DGEQRF";
char space[] = " ";
或者你可以查看函数的源代码;如果它实际上没有修改这些数组的内容,你可以将参数更改为const char *
。
答案 1 :(得分:4)
你的函数需要“char *”,而不是“const char *”。字符串文字只能分配给“const char *”。
答案 2 :(得分:1)
抱歉这么晚,我刚刚碰到这个问题。你可以试试这个,
string dgeqrf = "DGEQRF";
使用“const char *”的一个问题是像这样的代码,
string formatString;
switch (format)
{
case FORMAT_RGB: formatString = "RGB"; break;
case FORMAT_RGBA: formatString = "RGBA"; break;
case FORMAT_TP10: formatString = "TP10"; break;
default: formatString = "Unsupported"; break;
}
如果将formatString声明为“const char *”,则无效。