我得到了以下代码
文件 c_header.h
#ifdef __cplusplus
extern "C" {
#endif
void Do_Some_String_Operation(const char* const pString);
#ifdef __cplusplus
}
#endif
此代码包含在cpp文件中。
文件 cpp_file.cpp
#include "c_header.h"
void main()
{
Do_Some_String_Operation("my_nice_string");
}
这里的问题是,默认情况下将参数视为字符串。由于该函数仅使用一个char *,因此编译器会警告我有关隐式转换字符串=> char。
我如何告诉编译器将参数视为char *。我尝试过
Do_Some_String_Operation(static_cast<char*>("my_nice_string"));
但这并没有使警告消失。 :(
答案 0 :(得分:3)
您的代码格式正确,可以正确编译。
作为旁注,您可能希望删除函数 declaration 中的顶级const
:
void Do_Some_String_Operation(const char* pString);
顶层const
是函数的实现细节,不应泄漏到其接口中。您可以在功能定义中添加const
。