草庐IT

Static-Stack-Usage-Analysis

全部标签

c++ - 错误 : ISO C++ forbids in-class initialization of non-const static member

这是头文件:employee.h#ifndefEMPLOYEE_H#defineEMPLOYEE_H#include#includeusingnamespacestd;classEmployee{public:Employee(conststring&first,conststring&last)重载的构造函数:firstName(first),firstName重载构造函数lastName(last)lastName重载构造函数{//Theconstructorstart++counter;它为每个创建的对象加一;cout析构函数cout返回每个对象的名字和姓氏--counter;计

c++ - 为什么静态成员函数定义不能有关键字 'static' ?

根据thisC++中'static'关键字的链接:Thestatickeywordisonlyusedwiththedeclarationofastaticmember,insidetheclassdefinition,butnotwiththedefinitionofthatstaticmember.为什么在成员函数定义中禁止使用static关键字?我确实理解在定义中将函数重新声明为“静态”是多余的。但是在函数定义的编译过程中使用它应该是无害的,因为它不会导致任何歧义。那么为什么编译器会禁止它呢? 最佳答案 有歧义好吧。成员函数完

c++ - 为什么在定义(而不是声明)静态数据成员时不能使用 "' static'?

我正在寻找在C++中初始化静态map的方法,并找到了以下代码:structA{staticmapcreate_map(){mapm;m[1]=2;m[3]=4;m[5]=6;returnm;}staticconstmapmyMap;};constmapA::myMap=A::create_map();但是,如果我将最后一行更改为conststaticmapA::myMap=A::create_map();编译器投诉:在定义(而不是声明)静态数据成员时可能不使用“静态”?我想知道为什么?这背后的逻辑或推理是什么? 最佳答案 stati

c++ - 是否有 "safe"static_cast 替代方案?

C++11/14中的static_cast或实现此功能的库是否有“安全”替代方案?我所说的“安全”是指强制转换应该只允许不丢失精度的强制转换。因此,从int64_t到int32_t的转换只有在数字适合int32_t时才被允许,否则会报告错误。 最佳答案 有gsl::narrownarrow//narrow(x)isstatic_cast(x)ifstatic_cast(x)==xoritthrowsnarrowing_error 关于c++-是否有"safe"static_cast替代方

c++ - 编译时等效的 std::cout,或 c++11 中编译时常量值的 static_assert 字符串化

有没有办法打印constexpr的值?或#defined编译时的值?我想要std::cout的等价物,或某种方式来做类似的事情constexprintPI_INT=4;static_assert(PI_INT==3,const_str_join("PI_INTmustbe3,not",const_int_to_str(PI_INT)));编辑:我可以使用constexpr进行一些基本的编译时打印s,至少在gcc上做类似的事情templatestructdisplay_non_zero_int_value;templatestructdisplay_non_zero_int_value{

c++ - 用于解析 C 和 C++ 声明的螺旋规则和 'declaration follows usage'

此问题跟随thisotherquestionaboutCdeclarations.阅读这个问题的答案,我读到了spiralrule而且我也理解了“声明遵循用法”的含义。到目前为止还可以。但后来我读到thisdeclaration:char*(*(*a[N])())();我想知道如何使用“声明遵循用法”“规则”来解析它。尤其是数组部分。我读的是:(*(*a[N])())是一个函数()返回一个char*,然后,解引用以下(*a[N])()//1这个'函数返回一个char*',所以1是一个'指向返回char*的函数的指针'那么我会说'当(*a[N])被调用时,它是[previousdecla

c++ - 如何调试 'Stack smashing detected' ?

这个问题不太可能帮助任何future的访客;它仅与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前.我有一个复杂的C++代码。这是一个FastCGI程序,使用FastCGIC++Classlibrary.当我要求它提供一个非常长的网址时,我得到:***stacksmashingdetected***:./tileserveterminatedErreurdesegmentation对于现实生活中的应用程序,这不是问题,因为我从不使用这么长的URL,但这意味着任

c++ - MSVC++ : template's static_assert is not triggered inside a lambda

更新2:这已在VS2019Preview16.1Preview1中得到修复。更新:我已在visualstudio.com提交错误报告.所以我开始研究C++的模板,当我试图阻止使用static_assert编译模板类时遇到了这个问题。基本上,static_assert错误在VS2017上使用C++语言标准:ISOC++17标准(/std:c++17)。我也在gcc-7上使用-std=c++17进行了尝试,并触发了错误。这是VS2017上的错误还是我遗漏了什么?代码示例:#include#include#includetemplateclassIntegralContainer{stati

c++ - 为什么 static_cast(*this) 到基类会创建一个临时拷贝?

我正在阅读EffectiveC++并遇到了这个例子:classWindow{//baseclasspublic:virtualvoidonResize(){...}//baseonResizeimpl...};classSpecialWindow:publicWindow{//derivedclasspublic:virtualvoidonResize(){//derivedonResizeimpl;static_cast(*this).onResize();//cast*thistoWindow,//thencallitsonResize;//thisdoesn'twork!.../

c++ - static_cast<int>(foo) 与 (int)foo

有人能详细说明一下区别吗? 最佳答案 不同之处在于(int)foo可以表示六种不同的东西。它可能是一个static_cast(在静态已知类型之间转换),它可能是一个const_cast(添加或删除const-ness),或者它可能是一个reinterpret_cast(在指针类型之间转换)编译器会尝试每一个,直到找到一个可以工作的。这意味着它可能不会总是选择您期望的那个,因此它可能会成为一个微妙的错误来源。此外,static_cast更容易搜索或进行搜索/替换。 关于c++-static