编译 C++ 代码时"Error: comparison between pointer and integer"

"Error: comparison between pointer and integer" when compiling c++ code

本文关键字:between pointer and integer comparison Error C++ 代码 编译      更新时间:2023-10-16

在编译以下代码时C++(编译器:clang++):

char* strcpy(char * dest, const char * src)
{
char* result = dest;
if(('' != dest) && ('' != src))
{
/* Start copy src to dest */
while ('' != *src)
{
*dest++ = *src++;
}
/* put '' termination */
*dest = '';
}
return result;
}

我收到以下错误代码:

string/strcpy.cpp:12:11: error: comparison between pointer and integer
('int' and 'char *')
if(('' != dest) && ('' != src))
~~~~ ^  ~~~~
string/strcpy.cpp:12:29: error: comparison between pointer and integer ('int'
and 'const char *')
if(('' != dest) && ('' != src))

我知道与此错误相关的大多数错误都是在要比较的字符在引号而不是撇号之间时产生的,但在此代码中并非如此。为什么会产生此错误?提前感谢!

你的意思

if((NULL != dest) && (NULL != src))

更地道的

if((dest) && (src))
('' != dest)

在上面,''是字符文本,但dest是指向字符的指针。这就是引发错误的原因。

我相信如果您将条件更改为

('' != *dest)

编辑:哎呀,我以为你试图检查字符串是否在它的末尾。如果您尝试检查指针是否为 null,正确的方法是简单地将其评估为条件。

if(dest)