c++中使用c的函数要不要加std,c++中使用Linux函数时要不要加上“::" 50C

1.c++中使用c的函数要不要加std

比如stdio.h 与cstdio,我看网上说是将stdio.h中的函数放入了名称空间std中,那么在使用函数如printf时应该加上std::printf才对啊,但是实际上

#include<cstdio>
int main(void)
{
        printf("csdn");
        return 0;
}

 #include<cstdio>
int main(void)
{
        ::printf("csdn");
        return 0;
}

 #include<cstdio>
int main(void)
{
        std::printf("csdn");
        return 0;
}

都可以通过编译,这是什么原因?哪一种才是标准的写法?


2.c++中使用Linux函数时要不要加上“::"?

::pthread_creat(&threadID,nullptr,threadfunciton,nullptr)

4个回答

这是名字空间的问题,printf是c标函数,是不需要加std的,即使它已经被整合到了新标准的c++库中也不需要,整合的目的是为了避免和c++和c的名字冲突,但是c++输入输出使用的是io流,和c有本质的区别,所以不存在名字冲突。所以不需要加,是否加std,还要看这个函数是否包含在std名字空间中,关于名字空间,建议花点时间去学习一下,磨刀不误砍柴工,这些都是很有必要知道的。

liao20081228
蓝月心语 我看了下cstdio源文件,里面有在std空间里使用using ::c标准函数,这应该就是把c的函数装入std空间中吧?
大约 3 年之前 回复

1,用VC6.0生成一个标准的helloworld来看的话

#include <stdio.h>
int main(int argc, char* argv[])
{
    printf("Hello World!\n");

    return 0;
}

2,linux下的话,包含头文件
#include
可以使用也可以不使用

百度下"命名空间"。双冒号表示顶层的命名空间,加不加没有什么要求,这个是习惯问题,如果你在你的代码中不加using namespace的话,前面就得加std了。像string,cin,cout

题目类型干嘛要加Java。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问