将文字字符串作为const char *参数传递会导致代码分析器错误

时间:2019-06-06 06:46:57

标签: c++ eclipse-cdt code-analysis invalid-argument

我有重载的功能

int put_message(int level, int sys_log_level, const char * inp_message);
int put_message(int level, int sys_log_level, const std::string &inp_message);

并调用此函数

put_message(0, LOG_ERR, "clock_gettime error");

代码已编译并可以正常工作 但是Eclipse CDT代码分析器说

  

无效的参数'   候选人是:   int put_message(int,int,const char *)   int put_message(int,int,const?&)   '

如何解决此错误?

更新: 将LOG_ERR修改为int(LOG_ERR)后,错误消失。 我尚未在标题中添加。 添加即可解决问题。

2 个答案:

答案 0 :(得分:0)

您缺少#include <string>或与字符串类有关的内容

答案 1 :(得分:-2)

您需要将字符串强制转换为正确的类型,编译器将“某些字符串”视为char [],因此您需要将其强制转换为const char *

尝试

put_message(0, LOG_ERR, (const char*)"clock_gettime error");