草庐IT

code-snippet_outer

全部标签

c++ - Visual Studio Code : C++ syntax highlighting for classes

有没有办法让VisualStudio代码(Linux)突出显示C++的自定义类和数据类型?我想要这样做,这样当我创建一个返回特定数据类型的函数时,它会正确地突出显示它并有助于提高可读性一目了然。 最佳答案 我们有解决方案!vscodecpp团队发布了insidebuilder可以做Syntactic/lexicalandsemanticcolorization 关于c++-VisualStudioCode:C++syntaxhighlightingforclasses,我们在StackO

c++ - cppcheck 认为我有 "Redundant code: Found a statement that begins with numeric constant"

Cppcheck(version1.46.1)对像这样的枚举发出以下警告:enumDATABASE_TYPE{DATABASE_TYPE_UNKNOWN=-1,//Redundantcode:Foundastatementthatbeginswithnumericconstant我不认为这是多余的。能够做那样的事情非常重要。这是cppcheck的错误还是我没有看到什么?更新我设法将它归结为一个最小的例子。这因为cppcheck有2个(更多)错误而变得复杂,这使得我的减少看起来没有效果。共有5个文件:a.h、a.cpp、b.h、b.cpp和inc。h包含以下内容。VC9在没有警告的情况下

c++ - clang 与 gcc : different code for volatile access

考虑这个例子:volatileunsignedintx;unsignedinty;voidf(){x/=2;}voidg(){y/=2;}当使用-Os编译时,clang-6.0在x64上为f和g生成相同的shrl(%rip)指令模式(见https://godbolt.org/g/hUPprL),而gcc-7.3为f()生成这个(见https://godbolt.org/g/vMcKVV):mov0x200b67(%rip),%eax#601034shr%eaxmov%eax,0x200b5f(%rip)#601034这只是一个错过的优化,还是gcc拒绝shrl(%rip)的理由?如果访

c++ - C++ 中的数组 : can you explain what this line of code is doing?

我需要修改一些C++代码,但由于我对这门语言还比较陌生,所以在理解某些表达式时遇到了困难。我有一个函数voidfunc(doublem[2][12],doublen[2][3])像这样从其他函数内部调用doubleA[12];doubleB[6];(...)func((double(*)[12])A,(double(*)[3])B)最后一行代码是将一维数组转换为二维数组,但到底发生了什么?我可以使用相同的技术将一维数组转换为二维数组吗?:doubleA[12];doubleB[6];(double(*)[12])A[0][5]=5; 最佳答案

C++ : Can the compiler optimize this code segment?

voidfoo(constintconstant){for(inti=0;i外循环的每次执行都会检查“constant”的值。然而,常量永远不会改变,所以大量的CPU时间被浪费在测试条件常量我个人认为这个问题是不可避免的。即使编译器将比较放在外循环之前并设置某种bool变量“skip_inner_stuff”,仍然必须在外循环的每次传递中检查该变量。您对此事有何看法?是否有更有效的方法来编写上述代码段来避免该问题? 最佳答案 您描述的优化也称为loopunswitching.多年来,它一直是优化编译器的标准部分-但如果您想确保编译器

c++ - 如何使用 MinGW + Code::Block 编译的 GUI 程序的控制台框

当我在MinGW+MSys中使用命令行编译并运行一个简单的Win32GUI程序时:$g++main.cpp-oapp-std=c++0x$./app只显示一个对话框。但是当我把这个程序放入Code::BlocksIDE并编译它时,它总是会产生一个带有对话框的黑色控制台框。在链接选项中添加-mwindows无效。ma​​in.cpp:#includeintWinMain(HINSTANCE,HINSTANCE,LPSTR,int){MessageBox(0,"Hello,Windows","MinGWTestProgram",MB_OK);return0;}我怎样才能去掉控制台框?

C++ operator() 重载 boost::system::error_code 技巧

我看到了boost实现的一个绝妙技巧,他们以某种方式使用()运算符的重载来将类boost::system::error_code的实例评估为bool值classerror_code{...typedefvoid(*unspecified_bool_type)();staticvoidunspecified_bool_true(){}operatorunspecified_bool_type()const//trueiferror{returnm_val==0?0:unspecified_bool_true;}...}这导致有可能检查这样的错误...boost::system::erro

C++数组作为参数——为什么只需要指定 "outer"维度

我试图找出多维数组,特别是如何通过将它们传递给函数来填充它们。这一切都非常不直观,但最不直观,对我来说根本没有任何意义的是:为什么在将二维数组作为参数传递时必须指定列数而不指定行数?我可能已经查看了五个或更多提供语法的论坛线程,但没有一个解释其背后的原因。我同意编译器需要知道数组的大小才能对其进行操作,但二维数组基本上不是数组的数组吗? 最佳答案 butisn'tabidimensionalarraybasicallyanarrayofarrays?是的。但是编译器确实需要知道大小,以便在对数组进行索引时能够正确地执行指针运算(好吧

c# - "Enable Debugging of Unmanaged Code"在哪里可以在系统运行时编辑代码?

在较旧版本的VisualStudio中(比如家里的版本,猜想是2013年),我可以在系统运行时编辑我的代码,但我无法继续(而且我不想继续)。当单步执行我的代码时,我只想开始输入,然后在完成编辑后重新编译。优点是在打字时我可以悬停鼠标观察变量的值/结构并据此进行编辑。有时它是一个很好的指南,例如提醒或注释。为什么我的VisualStudio2015阻止我编辑我的代码?说:Changesarenotallowedwhenunmanageddebuggingisenabled附言我的EditandContinue选项已按照互联网上各处的建议启用。并且2015年没有启用非托管调试选项,就像这里

c++ - 构建 PBRT v2 错误 - 错误 1 ​​错误 U1077 : 'if' : return code '0x1'

我有visualstudio2013社区版,我有pbrt-v2代码库,一直在尝试构建解决方案,但这是我遇到的错误之一(它似乎与nmake相关):NMAKE-Error1errorU1077:'if':returncode'0x1'我不确定该怎么做,因为其他说明似乎不是很清楚。任何帮助将不胜感激!谢谢你,祝你有美好的一天!------------更新--------------------我让它在visualstudio2013上编译和构建。问题是我认为我有过时的PBRT文件。基本上我所做的是通过github查看项目,我认为这应该可行,但后来我注意到你可以在网站上下载最新的pbrt-v2