标签:emc stdio.h 转换 span 不同 技术分享 const ptr bubuko
相同的如下代码
#include <stdio.h> #include <string.h> int main() { const char str[] = "http://www.yiibai.com/html"; const char ch = ‘.‘; char *ret; ret = memchr(str, ch, strlen(str)); printf("%s\n%s\n", str, ret); return 0; }
用C的编译器可以通过,main.c用GCC和MSVC都可以。
但是,改成main.cpp,用GCC和MSVC都会报错。
memchr函数原型为
const void* memchr( const void* ptr, int ch, size_t count );
在const void* 转换为 char* 时,C语言编译器和C++编译器处理是不同的。
在main.cpp中,改为
ret = (char *)memchr(str, ch, strlen(str));
就可以编译通过了。
原因是C++编译器对隐式转换要求更高。
C语言与C++ <string.h> memchr出现的问题
标签:emc stdio.h 转换 span 不同 技术分享 const ptr bubuko
原文地址:https://www.cnblogs.com/tangjicheng/p/9123846.html