打印

程序运行问题

[复制链接]
842|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2014-2-28 18:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//m_phWorkerThreads[i] = ::CreateThread(0, 0, _WorkerThread, (void *)pThreadParams, 0, &nThreadID);
        m_phWorkerThreads[i] =CreateThread(0,0,_WorkerThread,(void *)pThreadParams,0,&nThreadID);
上面一句是原来的
下面一句,是后该的
两个方式, 程序运行没啥问题

CreateThread 这个是系统提供的函数, 加不加“::” 有区别么?原来作者为啥要加呢?

相关帖子

沙发
火箭球迷| | 2014-2-28 18:38 | 只看该作者
如果在你的命名空间没有声明同名的函数则没有区别;其实对于这样的加不加无所谓,感觉是有一些老的程序员遗留下来的做法,我看到的代码加::的不多,

使用特权

评论回复
板凳
pkat| | 2014-2-28 18:50 | 只看该作者
是不是在某些时候会对CreateThread重定义。没有 :: 的话,默认使用本namespace/class下的函数

使用特权

评论回复
地板
无冕之王| | 2014-2-28 19:00 | 只看该作者
如果不加::运算符,在找这个函数时会按作用域从内到外找,加了则表示使用全局作用域的。一般只要没有不同作用域或引入的不同命名空间中不存在同名函数时可以不用加::号,就算有,只有原型不一样,也可以不加,编译时会根据参数自动匹配正确的一个。
对于操作系统的API,C++程序员大多都会在前面加一个::,以防名称冲突或者明确告诉阅读代码的人这个是全局命名空间中的API
写程序时人的思维一般不愿意花另外的心思去核实要调的API函数有没有冲突,而且习惯于明确表达程序的意图,这是一种个人习惯,随着了解的库越多,写过的代码越多,这种习惯就更明显。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝