为了账号安全,请及时绑定邮箱和手机立即绑定

人们为什么在C ++中这么多使用__(双下划线)

人们为什么在C ++中这么多使用__(双下划线)

C++
holdtom 2019-10-09 14:56:27
我浏览了一些开源C ++代码,发现在代码中使用了很多双下划线,主要是在变量名的开头。return __CYGWIN__;只是想知道这是有原因的,还是仅仅是某些人编写了代码样式?我认为我很难阅读。
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

来自C ++编程,规则和建议:


根据ANSI-C标准,在标识符中使用两个下划线(__)保留给编译器内部使用。


下划线(“ _”)通常用于库函数的名称(例如“ _main”和“ _exit”)。为了避免冲突,请勿以下划线开头标识符。


查看完整回答
反对 回复 2019-10-09
  • painterQ
    painterQ
    请问,如果编译器发现自己处理不了的双下划线开头的标识符会怎么做呢。因为有些地方问__typeof__()和typeof()的区别,我感觉我看了他们的回答都没有明白。谢谢
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

除非他们认为它们是“实现的一部分”,即标准库,否则它们就不应该。

这些规则是相当具体的,比其他一些建议更详细。

保留所有包含双下划线或以下划线后跟大写字母开头的标识符,以供在所有范围内使用该实现,即,它们可用于宏。

此外,所有其他以下划线开头的标识符(即后跟另一个下划线或大写字母的标识符)都保留给全局范围内的实现。这意味着您可以在自己的名称空间或类定义中使用这些标识符。

这就是为什么Microsoft在其许多核心运行时库函数(不属于C ++标准)中使用带下划线的函数名,并用小写表示的原因。这些函数名称保证不会与标准C ++函数或用户代码函数冲突。


查看完整回答
反对 回复 2019-10-09
?
开满天机

TA贡献1786条经验 获得超13个赞

前面的评论是正确的。 __Symbol__通常是有用的编译器(或预处理器)供应商提供的魔术令牌。也许其中使用最广泛的是__FILE____LINE__,它们由C预处理程序扩展以指示当前的文件名和行号。当您要记录某种程序断言失败(包括错误的文本位置)时,这很方便。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 2141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信