这个问题可能看起来相当基础,但来自工程(非计算机科学)背景,我不确定某些C++代码中的'#'s片段是什么。快速搜索后,我找到了简洁明了的cplusplus关于预处理器指令的教程页面。但是,为什么要为预处理指令的概念烦恼呢?是不是不能写出可以给常量赋值、定义子程序/函数/宏和处理错误的等价代码?我想我最终想知道什么时候使用这种预处理器指令是好的做法,什么时候不是。 最佳答案 当您需要做一些超出实际应用程序范围的事情时,您可以使用预处理器指令。例如,您将看到根据构建可执行文件的体系结构来包含或不包含代码的预处理。例如:#ifdef_WI
这个问题可能看起来相当基础,但来自工程(非计算机科学)背景,我不确定某些C++代码中的'#'s片段是什么。快速搜索后,我找到了简洁明了的cplusplus关于预处理器指令的教程页面。但是,为什么要为预处理指令的概念烦恼呢?是不是不能写出可以给常量赋值、定义子程序/函数/宏和处理错误的等价代码?我想我最终想知道什么时候使用这种预处理器指令是好的做法,什么时候不是。 最佳答案 当您需要做一些超出实际应用程序范围的事情时,您可以使用预处理器指令。例如,您将看到根据构建可执行文件的体系结构来包含或不包含代码的预处理。例如:#ifdef_WI
我一直在看codegolf并想出了尝试这段代码的想法:#defineD#define添加此行后,一切正常,但是我将其扩展为:#defineD#defineDVALUE在这里我得到了5个编译错误。如果我将D更改为#define一切都很好,谁能解释一下,为什么这段代码是非法的?注意:我使用的是VS2008编译器。编辑:经过一些回答,我发现我需要提供编译错误列表:错误C2121:“#”:无效字符:可能是宏扩展的结果错误C2146:语法错误:缺少';'在标识符“VALUE”之前错误C4430:缺少类型说明符-假定为int。注意:C++不支持default-interrorC2144:语法错误:
我一直在看codegolf并想出了尝试这段代码的想法:#defineD#define添加此行后,一切正常,但是我将其扩展为:#defineD#defineDVALUE在这里我得到了5个编译错误。如果我将D更改为#define一切都很好,谁能解释一下,为什么这段代码是非法的?注意:我使用的是VS2008编译器。编辑:经过一些回答,我发现我需要提供编译错误列表:错误C2121:“#”:无效字符:可能是宏扩展的结果错误C2146:语法错误:缺少';'在标识符“VALUE”之前错误C4430:缺少类型说明符-假定为int。注意:C++不支持default-interrorC2144:语法错误:
C++的容器vector、deque、...除了operator[index,还提供at(index)访问器功能]来访问容器元素。Thedifferencebetweenthismemberfunctionandmemberoperatorfunctionoperator[]isthatdeque::atsignalsiftherequestedpositionisoutofrangebythrowinganout_of_rangeexception.我的代码中从来没有,也从来没有需要过这个函数,因为在我的C++代码中访问可能超出范围的元素是没有意义的。始终编写代码以访问正确的索引
C++的容器vector、deque、...除了operator[index,还提供at(index)访问器功能]来访问容器元素。Thedifferencebetweenthismemberfunctionandmemberoperatorfunctionoperator[]isthatdeque::atsignalsiftherequestedpositionisoutofrangebythrowinganout_of_rangeexception.我的代码中从来没有,也从来没有需要过这个函数,因为在我的C++代码中访问可能超出范围的元素是没有意义的。始终编写代码以访问正确的索引
最近我的一位friend在一次采访中遇到了这个问题。面试官问他$、@、|、^、~等特殊字符在c或c++中有没有用,在哪里。我知道|、^和~分别用作按位或、异或和补码。但是不知道@和$有没有什么特殊含义。如果可以,请举例说明它可以应用在哪里? 最佳答案 @在C中一般是无效的;它不用于任何事情。它被Objective-C用于各种目的,但那完全是另一回事。$也是无效的,但许多实现允许它出现在标识符中,就像字母一样。(例如,在这些实现中,如果您愿意,可以将变量或函数命名为$$$。)尽管如此,它也没有任何特殊含义。
最近我的一位friend在一次采访中遇到了这个问题。面试官问他$、@、|、^、~等特殊字符在c或c++中有没有用,在哪里。我知道|、^和~分别用作按位或、异或和补码。但是不知道@和$有没有什么特殊含义。如果可以,请举例说明它可以应用在哪里? 最佳答案 @在C中一般是无效的;它不用于任何事情。它被Objective-C用于各种目的,但那完全是另一回事。$也是无效的,但许多实现允许它出现在标识符中,就像字母一样。(例如,在这些实现中,如果您愿意,可以将变量或函数命名为$$$。)尽管如此,它也没有任何特殊含义。
我正在开发一个使用大量#pragmaomp的c++项目。我使用美妙的clang格式来保持整洁,但它总是删除所有预处理器指令的缩进。有没有办法改变这种行为?还是有其他更值得推荐的格式化工具?还是我应该完全避免使用这些工具? 最佳答案 从6.0版开始,可以使用选项IndentPPDirectives。thisreview中描述了用法。.使用IndentPPDirectives:None会导致:#ifFOO#ifBAR#include#endif#endif而IndentPPDirectives:AfterHash给出:#ifFOO#if
我正在开发一个使用大量#pragmaomp的c++项目。我使用美妙的clang格式来保持整洁,但它总是删除所有预处理器指令的缩进。有没有办法改变这种行为?还是有其他更值得推荐的格式化工具?还是我应该完全避免使用这些工具? 最佳答案 从6.0版开始,可以使用选项IndentPPDirectives。thisreview中描述了用法。.使用IndentPPDirectives:None会导致:#ifFOO#ifBAR#include#endif#endif而IndentPPDirectives:AfterHash给出:#ifFOO#if