New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
有关 void * 的表述 #41
Comments
请养阅读序言的习惯,一般在此会介绍一些书中的用语约定。
请不要断章取义,在引用时不要忘记加入「不允许隐式转换」,如果对书中的解释不满意,请善用搜索: |
补充:
老实说笔者目前没有时间维护此项目,短期内不会有更新。此项目最初写于笔者许多年前攻读学士时期,如遇错误百出实属自然。如若对内容感到不满,您有两个选择:
|
不允许 implicit cast 和是不是该语言的一部分有何关系。。 |
不过事实上 void* 可以隐式转换到 bool,猜测作者的意思是不能隐式转换到除 cv void* 以外的其他指针类型 |
确有表达过略而引起这里的误会的因素,遂略作补充。 “传统 C++”(“传统”和“现代”相对,应该就是 traditional C++ ,虽然 Preface 页对应的英文版现在还不存在) 在一般语境中确实不像是被普遍已经定义了的固定搭配(而不是像“传统 C”那样约定俗成另有不同指涉,如[1]、[2]),所以在序言中补充定义通常并无问题。尽管如此,这里的传统 C++ 的说法只能按如“传统 C” 那样的 pre-standard 来解释变通,否则下文和所给链接中的内容直接矛盾(最近没有修改,和正式 ISO C++ 标准中的文本一致,即便是 informative text )。因为不理解作者的原意而不便直接修改提 PR ,这是针对这一段提 issue 的原因之一。
建议明示项目状态以便帮助改进。
这里并非取义问题,而是一定程度上断章不够明确。实际上,引文的原意关注的只是括号中的逗号右边的部分,即“void * 并不属于 C++ 语言的一部分”的含义(不够明确而看起来有问题);括号前的内容作为引文的上文便于参考,表示即便加上上文之后也难以理解含义。“不允许”这一句子成分残缺的确可能引起关注点的误解,但是没有实质改变这个问题,反而加重了读者的困惑:如上面有用户指出的,“不允许 implicit cast 和是不是该语言的一部分有何关系”(按引文的原话对应的则是“implicit cast 和是不是该语言的一部分有何关系)。 |
部分修改已创建 PR (尽管关于这里提到的问题我不认为是 editorial 的,需要确认)。 关于可能出错的问题,可能需要系统性检查,建议创建类似 #2 的 meta issue (因该 issue 标记为 enhancement ,似不便直接涵盖)。 |
对于疑问,提出issue来讨论是很正常的流程。 |
|
@jovan-wong 提出 issue 是一种常用的手段,但如何适用跟具体项目约定的规则有关。例如,ISO C++ 草案按照规则判定适合直接提出 PR 或者 issue 讨论的 editorial issue 。更复杂的问题通过会议和其它流程讨论解决。 本项目中我没有找到其它详细指引,因此按 GitHub 用户的惯例在当前和主题最相关的 issue 中展开讨论。 关于 |
学术写作中一般以作者约定为准,作者为了方便文中表述,会提前对相关术语进行约定,不一定与习惯用语相同,笔者对中文流行用语不太熟悉,本书主要讨论 C++11/14/17,故约定标准正式之前的均为传统。 不过为了避免歧义,倒是可以总结补充术语表在附录中进行进一步说明。
此前对本章节有过一次小规模的修订,没有仔细审查此表述的正确性,如若有误请查阅相关标准加以证明,非常感谢。 |
烦请给出 C++11/14/17 标准中具体章节中表述的证明。 |
且不论“编译器”定义
NULL
的说法来源是什么,“传统 C++”是指 ISO C++ 之前的(如由 Annotated Reference Manual 定义的) C++ 还是 ISO C++11 以前的 C++ ?指代不明。注意 http://eel.is/c++draft/support.types.nullptr#footnote-187 是在什么时候引入的,烦请重新校对内容质量。
依据?
The text was updated successfully, but these errors were encountered: