Chinaunix

标题: 如何区分Standard C Library Functions 和ISO C++? [打印本页]

作者: larace    时间: 2008-08-27 09:15
标题: 如何区分Standard C Library Functions 和ISO C++?
程序在编译的时候出现这个错误
无法使用 const char* 来初始化 char*.
检测到 1 错误.

用man strstr 查看了一下
Standard C Library Functions
#include <string.h>
char *strstr(const char *s1, const char *s2);

ISO C++
#include <string.h>
const char *strstr(const char *s1, const char *s2);

如何区分Standard C Library Functions  和ISO C++?

我在程序里如何指定使用标准C还是ISO C++? 用以前的编译器没有出现这个错误。用solaris10 studio12编译时,出现了这个错误

怎么解决这个问题?


#include<stdio.h>
#include<string.h>
int main(int argc,char * argv[])
{
        const char aa[20] = "hello11111hihihi";//1111111111
        const char bb[20] = "11111";//222222222

        char *cc = strstr(aa,bb);//33333333
        printf("cc is %s\n",cc);
}

说明:
1 不能改动111 和222,可不可以更改333的格式?
2 我把char *cc = strstr() 改为const char *cc = strstr(),这种格式应该没有错误吧?(如果以后不会再用到cc变量)
作者: happy_fish100    时间: 2008-08-27 09:52
2 我把char *cc = strstr() 改为const char *cc = strstr(),这种格式应该没有错误吧?(如果以后不会再用到cc变量)

这样修改是没问题的。const char *cc表示cc中的内容(字符串)不可修改。
作者: jamesr    时间: 2008-08-27 09:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: westgarden    时间: 2008-08-27 12:46
原帖由 jamesr 于 2008-8-27 09:54 发表
如果用C++库,应该这样使用头文件
#include <cstdio>
#include <cstring>


还有:
std::strcpy();
std::strstr();
...

[ 本帖最后由 westgarden 于 2008-8-27 12:48 编辑 ]
作者: tyc611    时间: 2008-08-27 18:19
原帖由 westgarden 于 2008-8-27 12:46 发表


还有:
std::strcpy();
std::strstr();
...

C++中并不是什么东西都在std名字空间中的~~~C中过来的函数都在全局名字空间::中
作者: Visame    时间: 2008-08-27 18:31
我把char *cc = strstr() 改为const char *cc = strstr(),这种格式应该没有错误吧?(如果以后不会再用到cc变量)

这个应该是正确的。
并且以前的C中间是没有const关键字的,所以onst char *和char *是一样的
应该会有某个编译选项解决这个问题
作者: 0vk0    时间: 2008-08-27 19:21
可以更改333的格式, 这里使用的是使用标准C




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2