C:不推荐使用从字符串常量转换为’LPSTR {aka char *}'[-Wwrite-strings] – 警告.怎么避免?

weixin_38064085 2019-09-12 01:57:21
在编译C代码时,我收到此警告: deprecated conversion from string constant to ‘LPSTR {aka char*}’ [-Wwrite-strings] &pi)) // Pointer to PROCESS_INFORMATION structure.      ^ 代码是: STARTUPINFO si; memset(&si, 0, sizeof (STARTUPINFO)); si.cb = sizeof (STARTUPINFO); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = FALSE; PROCESS_INFORMATION pi; memset(&pi, 0, sizeof (PROCESS_INFORMATION)); if (!CreateProcess("C:\\Program Files\\Java\\jre7\\bin\\javaw.exe", " -jar install.jar", // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. 0, // Set handle inheritance to FALSE. CREATE_NO_WINDOW, // ON VISTA/WIN7, THIS CREATES NO WINDOW NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi)) // Pointer to PROCESS_INFORMATION structure. //Warning comes from this line - variable &pi { printf("CreateProcess failed\n"); return 0; } 是否可以采取措施避免这种情况(我的意思是不使用 – 抑制警告)?
...全文
478 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38069603 2019-09-12
  • 打赏
  • 举报
回复
编译器告诉你,CreateProcess的第二个参数是char *类型,但是你传递了const char *.换句话说,CreateProcess的第二个参数需要一个可修改的缓冲区,但是你传递的是一个不可修改的文字. 声明一个可修改的字符串,如下所示: char cmdline[] = "-jar install.jar";

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧