草庐IT

member-variables

全部标签

c++ - 对齐 : warning C4316 in all classes that have aligned members

今天我遇到了很多麻烦,因为我跟踪了一个非常隐蔽的腐败漏洞。我想如果我真的注意警告就不会那么难找到它,但由于找不到有关为什么弹出此特定警告的相关信息,我让它滑动了,这是一个错误。所以这是VisualStudio2013给我的有罪警告:warningC4316:objectallocatedontheheapmaynotbealigned16它是在通过const引用将align(16)临时传递给构造函数时生成的,如以下代码所示:classVector{};__declspec(align(16))classVectorA{};classShape{public:Shape(constVec

c++ - 为什么没有为所有变量报告 "unused variable"警告?

这个问题在这里已经有了答案:g++doesnotshowa'unused'warning(3个答案)关闭8年前。我有这个代码://initializerlists#include#includeintmain(){intvalues[]{1,2,3};std::vectorv{4,5,6};std::vectorcities{"London","NewYork","Paris","Tokio"};return0;}然而,gcc编译器只针对values数组给我unusedvariable警告。为什么v和cities没有被报告?

c++ - 扭曲的逻辑 : a global variable in one file refers to an extern variable but is also referred by that extern variable

文件A.cpp:#includeexternintiA;externintiB=iA;intmain(){std::cout文件B.cppexternintiB;externintiA=2*iB;编译链接运行,out进来debug和release模式是0,0我的问题是它是如何工作的,为什么在链接阶段没有问题?我正在使用VC++2003。 最佳答案 初始化程序覆盖了extern关键字,因此这没有什么“神奇”:您只是在不同的翻译单元中声明和定义两个完全不相关的变量。来自StandardforProgrammingLanguageC++-

c++ - std::condition_variables 可以用作计数信号量吗?

这是CanC++11condition_variablesbeusedtosynchronizeprocesses?的后续行动.std::condition_variable对象可以用作计数信号量吗?我认为不是因为对象似乎绑定(bind)到std::mutex,这意味着它只能用作二进制信号量。我在网上看过,包括here,here,和here,但找不到将这些对象用作计数信号量的引用或示例。 最佳答案 是的。structcounting_sem{counting_sem(std::ptrdiff_tinit=0):count(init)

c++ - G++ 4.6 -std=gnu++0x : Static Local Variable Constructor Call Timing and Thread Safety

voida(){...}voidb(){...}structX{X(){b();}};voidf(){a();staticXx;...}假设在进入main之后,f被多个线程(可能竞争)多次调用。(当然,唯一对a和b的调用是上面看到的那些)以上代码在-std=gnu++0x模式下用gccg++4.6编译时:Q1。是否保证至少调用一次a()并在调用b()之前返回?也就是说,在第一次调用f()时,x的构造函数是否会同时调用一个自动持续时间局部变量(非静态)(而不是在全局静态初始化时间)?Q2。是否保证b()只会被调用一次?即使两个线程第一次同时在不同的核上执行f?如果是,GCC生成的代码通过

c++ - GMock : How to return mock class variable as the return value

我是第一次尝试使用GMock(用于C++的谷歌模拟框架)。我有以下类(class):classLocalCache{public:virtualtime_tGetCurrentTime()=0;virtualintAddEntry(conststd::stringkey,std::string&value);virtualintGetEntry(conststd::stringkey,std::string&value);};GetEntry方法调用GetCurrentTime调用。我想模拟GetCurrentTime方法,以便我可以在测试中提前时钟以测试作为GetEntry调用的一部

c++ - LLVM IR : Identifying Variables with Metadata Nodes

目前我正在开发一种工具,该工具可以识别对任意程序的全局变量和字段变量的加载和存储访问。此外,访问的变量应该由它们的源级别名称/标识符来标识。为了完成这个,我将被诊断程序的源代码编译成带有调试信息的LLVMIR。到目前为止一切顺利,生成的元数据节点包含所需的源级别标识符。但是,我无法将某些LLVMIR标识符和元数据中的信息联系起来。例如,考虑一个类的静态成员:classTestClass{public:staticintNumber;};相应的LLVMIR如下所示:@_ZN12TestClass6NumberE=externalglobali32,align4...!15=!DIDeri

c++ - 错误 : invalid use of member in static member function

我有两个类,这是其中一个的标题:#ifndefWRAPPER_HPP#defineWRAPPER_HPP#includeusingnamespacestd;classWrapper{private://SDL_Surface*screen;public:staticSDL_Surface*screen;staticvoidset_screen(SDL_Surface*_screen);staticvoidset_pixel(intx,inty,Uint8color);staticvoidclear_screen(intr,intg,intb);staticSDL_Surface*loa

c++ - 与 std::condition_variable 相比,使用 std::atomic 的方法 wrt 在 C++ 中暂停和恢复 std::thread

这是一个单独的问题,但与我之前提出的问题有关here我正在使用std::thread在我的C++不断轮询某些数据并将其添加到缓冲区的代码。我用C++lambda像这样启动线程:StartMyThread(){thread_running=true;the_thread=std::thread{[this]{while(thread_running){GetData();}}};}thread_running是一个atomic在类头中声明。这是我的GetData功能:GetData(){//Someheavylogic}接下来我还有一个StopMyThread我设置的功能thread_r

c++ - CString 'Trim' : is not a member, 为什么?

我有一个简单的应用程序,我尝试用VCExpress编译并使用:适用于WindowsServer2003的Microsoft平台SDK,包含MFC和ATL。现在我有了这个简单的代码:CStringstrValue("test");CStrings=strValue.Trim();LPCTSTRlpStr=(LPCTSTR)strValue.Trim()这给我一个编译错误:c:\dev\test.cpp(463):errorC2039:'Trim':不是'CString'的成员c:\programfiles\microsoftplatformsdkforwindowsserver2003r