草庐IT

c++ - 在 C(或 C++)中取消引用指针的语法

我有一位同事在C语言中检查了这样的代码(语法#1):(*(*(*p_member).p_member).p_member).member当我问他为什么不使用->(语法#2)时:p_member->p_member->p_member->member他非常辩解说语法#2比#1更复杂...我最终更改了他的代码,因为我不得不修改它并且无法阅读它,然后他因为我实际触摸它而生气。..SO社区更喜欢哪种语法?两者都有效,但我发现语法#2更具可读性。由于问题是主观的,我将其设置为社区wiki。 最佳答案 语法#1的技术术语是“坚果”。也就是说,我

c++ - 在 C(或 C++)中取消引用指针的语法

我有一位同事在C语言中检查了这样的代码(语法#1):(*(*(*p_member).p_member).p_member).member当我问他为什么不使用->(语法#2)时:p_member->p_member->p_member->member他非常辩解说语法#2比#1更复杂...我最终更改了他的代码,因为我不得不修改它并且无法阅读它,然后他因为我实际触摸它而生气。..SO社区更喜欢哪种语法?两者都有效,但我发现语法#2更具可读性。由于问题是主观的,我将其设置为社区wiki。 最佳答案 语法#1的技术术语是“坚果”。也就是说,我

java - 为什么大括号后不需要分号?

我知道语句后面需要分号(我说的是Java、C++和类似语言),但花括号后面不需要分号。为什么会这样?if(a>b)printf("hello!");//semicolonismandatoryif(a>b){printf("hello!");}//semicolonisnotrequired是什么原因?我的意思是,这背后的理论是什么? 最佳答案 因为大括号用于对语句进行分组,但它们本身并不是语句。 关于java-为什么大括号后不需要分号?,我们在StackOverflow上找到一个类似的

java - 为什么大括号后不需要分号?

我知道语句后面需要分号(我说的是Java、C++和类似语言),但花括号后面不需要分号。为什么会这样?if(a>b)printf("hello!");//semicolonismandatoryif(a>b){printf("hello!");}//semicolonisnotrequired是什么原因?我的意思是,这背后的理论是什么? 最佳答案 因为大括号用于对语句进行分组,但它们本身并不是语句。 关于java-为什么大括号后不需要分号?,我们在StackOverflow上找到一个类似的

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

c++ - 在每个分号后有一个带有反斜杠的 c++ 代码块是什么意思?

我最近看到了C++代码块,其中每个分号后面都有一个“\”。我觉得这很奇怪。也许这只不过是一个错误或一些长期被遗忘的评论的残余(尽管那些有一个正斜杠“/”)。这个“\”对代码有什么影响?她是一个代码示例。#definePE_DECLARE_CLASS(class_)\typedefclass_MyClass;\staticvoidsetSuperClasses();\ 最佳答案 反斜杠作为一行中的最后一个字符会导致该行与下一行连接以进行预处理。对于常规C++解析换行符只是空格,所以这无关紧要。但是预处理器指令,特别是宏定义在行尾结束。

c++ - 在每个分号后有一个带有反斜杠的 c++ 代码块是什么意思?

我最近看到了C++代码块,其中每个分号后面都有一个“\”。我觉得这很奇怪。也许这只不过是一个错误或一些长期被遗忘的评论的残余(尽管那些有一个正斜杠“/”)。这个“\”对代码有什么影响?她是一个代码示例。#definePE_DECLARE_CLASS(class_)\typedefclass_MyClass;\staticvoidsetSuperClasses();\ 最佳答案 反斜杠作为一行中的最后一个字符会导致该行与下一行连接以进行预处理。对于常规C++解析换行符只是空格,所以这无关紧要。但是预处理器指令,特别是宏定义在行尾结束。

c++ - Boost 是否使用合法的 C++ 预处理指令语法?

我的(相对较旧的)C++编译器在this上卡住了Boost中的文件,开头为:#/*Copyright(C)2001#*HousemarqueOy#*http://www.housemarque.com#*#*DistributedundertheBoostSoftwareLicense,Version1.0.(See#*accompanyingfileLICENSE_1_0.txtorcopyat#*http://www.boost.org/LICENSE_1_0.txt)#*/#这真的是合法的C++吗?预处理器标记的语法规则是什么? 最佳答案

c++ - Boost 是否使用合法的 C++ 预处理指令语法?

我的(相对较旧的)C++编译器在this上卡住了Boost中的文件,开头为:#/*Copyright(C)2001#*HousemarqueOy#*http://www.housemarque.com#*#*DistributedundertheBoostSoftwareLicense,Version1.0.(See#*accompanyingfileLICENSE_1_0.txtorcopyat#*http://www.boost.org/LICENSE_1_0.txt)#*/#这真的是合法的C++吗?预处理器标记的语法规则是什么? 最佳答案