草庐IT

local_variable_defined

全部标签

c++ - 构造函数设置的 "const variables"用于表示 C++ 数组的边界?

下面的代码可以编译并且运行良好:classTest{private:constunsignedMAX;public:Test(constunsignedintn):MAX(n){}voidfoo(){intarray[MAX];...}};但是真的可以吗?我的意思是:Testa(3);Testb(8);array实际上分别有3个和8个单元格吗?如果是这样,是不是因为array是一个自动var并使用适当的维度进行实例化?谢谢 最佳答案 你写的在c99有效但不有效c++.我当然是在谈论您对VLA的使用的,而不是完整的片段。当使用g++-

c++ - condition_variable 的常见用例场景

条件变量可用于向其他线程发出信号,表明发生了某些事情:mutexm;condition_variablecv;threadt1([&cv]{//processing...cv.notify_one();});...unique_locklck(m);cv.wait(lck);但是正如您所看到的,在我们等待通知之前,有一个机会窗口,线程处理完成并且通知正在通过,所以我们将永远等待。在这种情况下,常见的解决方案是使用标志:mutexm;condition_variablecv;booldone=false;threadt1([&cv,&done]{//processing...done=t

c++ - "crosses initialization of variable"仅当初始化结合声明时

我读过thisquestion关于“跳转到案例标签”错误,但我还有一些疑问。我在Ubuntu12.04上使用g++4.7。这段代码报错:intmain(){intfoo=1;switch(foo){case1:inti=0;i++;break;case2:i++;break;}}错误是jump-to-case-label.cpp:Infunction‘intmain()’:jump-to-case-label.cpp:8:8:error:jumptocaselabel[-fpermissive]jump-to-case-label.cpp:5:9:error:crossesinitia

c++ - 错误 : aggregate 'first one' has incomplete type and cannot be defined

我写了这个头文件(header1.h):#ifndefHEADER1_H#defineHEADER1_Hclassfirst;//intsumm(inta,intb);#endif和这个源文件(header1.cpp和main.cpp):#include#include"header1.h"usingnamespacestd;classfirst{public:inta,b,c;intsum(inta,intb);};intfirst::sum(inta,intb){returna+b;}#include#include"header1.h"usingnamespacestd;firs

c++ - “static const”、 “#define” 和 “enum” 在性能和内存使用方面的区别

可能是因为#define语句的内联。我知道答案可能取决于编译器,那么假设是GCC。已有类似问题aboutC和aboutC++,但它们更多地是关于使用方面的。 最佳答案 编译器会在给定基本优化后将它们视为相同。检查起来相当容易-考虑以下C代码:#definea1staticconstintb=2;typedefenum{FOUR=4}enum_t;intmain(){enum_tc=FOUR;printf("%d\n",a);printf("%d\n",b);printf("%d\n",c);return0;}用gcc-O3编译:00

c++ - #define 函数参数中的井号

这个问题在这里已经有了答案:Whatdoes#xinsideaCmacromean?(4个答案)关闭4年前。这行代码中的井号表示什么?#defineCONDITION(x)if(!(x)){HandleError(#x,__FUNCTION__,__LINE__);returnfalse;}它是这样被调用的:CONDITION(foo!=false);

c++ - #defining a symbol to nothing 的成语叫什么名字?

如果我看到代码行#defineIO_API__declspec(dllexport)我会告诉我的同事“IO_API被定义为__declspec(dllexport)”。但是,如果我看到这行代码#defineIO_API我不确定我会简短而明确地告诉我的同事们什么:任何描述都可能会有些牵强附会。有没有共同的描述符?编辑:我不是在这里寻找用例,只是成语的名称。 最佳答案 在这里我们只是说ThemacroIO_APIexpandstonothing.或ThemacroIO_APIisempty.这确实很主观,但我认为前者导致的困惑最少。

C++ 初学者 : what is the point of using a variable by reference if using "const"?

我想知道这个函数声明中的逻辑:CMyException(conststd::string&Libelle=std::string(),...按引用使用变量有什么意义?通常,只要变量可能在内部被修改,您就会通过引用传递一个变量...因此,如果您使用关键字const,这意味着它永远不会被修改。这是矛盾的。谁能给我解释一下? 最佳答案 实际上引用是用来避免不必要的对象拷贝。现在,要理解为什么使用const,试试这个:std::string&x=std::string();//error编译会报错。这是因为表达式std::string()创

C++/Qt 编码风格——#define 应该放在哪里

我正尝试在Qt中构建一个突破性的游戏克隆。我需要弄清楚我的球与哪种类型的QGraphicsItem发生碰撞。例如,如果我的球与墙壁碰撞,球就会弹开,如果它与砖碰撞,它必须反弹并摧毁砖。要找出它是什么类型的QGraphicsItem,我认为最好的方法可能是覆盖QGraphicsItem::type()(如果这是,请告诉我方法不对!)。在brick.h的以下代码中,我将“Brick”的类型设置为3。现在,值3看起来很难跟踪。相反,我宁愿用“#define”来声明一些东西#include//shouldthis#definebehere?//#defineBRICK_SPRITE3class

c++ - #define 代码行到别的东西

在c/c++中是否有可能执行以下操作:#define(_asmint3;)(exit(1))所以在我的代码中的任何地方,这一行都将在编译时被替换。我知道这是不好的做法,但有可能吗?干杯 最佳答案 您可以进行全局搜索并替换为您选择的编程编辑器(或IDE),并将_asmint3更改为例如FOO,然后像这样定义一个宏FOO:#if1// 关于c++-#define代码行到别的东西,我们在StackOverflow上找到一个类似的问题: https://stackov