liao20081228
蓝月心语
采纳率62.5%
2017-06-02 03:35 阅读 1.4k

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

50

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条回答 默认 最新

  • guwuchangtian 一个纸杯 2017-06-02 07:13

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

    点赞 1 评论 复制链接分享
  • what951006 小乌龟在大乌龟背上 2017-06-02 05:54

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

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

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

    点赞 评论 复制链接分享
  • yangbo50304 yangbo50304 2017-06-02 05:57

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

    点赞 评论 复制链接分享
  • yizishou yizishou 2017-06-02 06:09

    题目类型干嘛要加Java。。

    点赞 评论 复制链接分享

相关推荐