草庐IT

warn_memset_zero_len

全部标签

c++ - "use -D_SCL_SECURE_NO_WARNINGS"是什么意思?

我在尝试编译曲线压缩程序时出错,错误号C4996,带参数的函数调用可能不安全。它告诉我使用上述内容。错误来自xutility头文件,我以前从未见过它。这是我必须输入控制台的标志吗?网上几乎没有提到它... 最佳答案 -D是一个命令行编译器标志,它使其余文本被视为代码中存在#define。在解决方案资源管理器中,右键单击项目,选择“属性”。项目属性页面将打开。展开左侧树中的“>C/C++”条目并在其下选择“预处理器”。右Pane中的顶部条目应该是“预处理器定义”。在该编辑框中,添加_SCL_SECURE_NO_WARNINGS,用;将

C++ : Catch a divide by zero error

这是一段简单的代码,其中发生了被零除。我试图捕获它:#includeintmain(intargc,char*argv[]){intDividend=10;intDivisor=0;try{std::cout但应用程序无论如何都会崩溃(即使我设置了MinGW的选项-fexceptions)。是否有可能捕捉到这样的异常(我理解的不是C++异常,而是FPU异常)?我知道我可以检查除数before除数,但我假设,因为除以零很少见(至少在我的应用程序中),它会更多尝试除法(并在发生错误时捕获错误)比在除法之前每次测试除数时有效。我正在一台WindowsXP计算机上进行这些测试,但希望让它跨平台

c++ - How to get around GCC ‘*((void*)& b +4)’ may be used uninitialized in this function warning while using boost::optional

我有类似下面的代码:#include::boost::optionalgetitem();intgo(intnr){boost::optionala=getitem();boost::optionalb;if(nr>0)b=nr;if(a!=b)return1;return0;}当使用GCC4.7.2和Boost1.53进行编译时,使用以下命令:g++-c-O2-Wall-DNDEBUG发出以下警告:13:3:warning:‘((void)&b+4)’maybeuseduninitializedinthisfunction[-Wmaybe-uninitialized]显然,根本问题在

c++ - OS X Yosemite 中的 gcc 4.9.1 - gcc : warning: couldn’t understand kern. osversion ‘14.0.0'

我安装了OSXYosemite,现在我遇到了gcc4.9.1编译器的大问题。我希望有人可以帮助我。我尝试编译我的程序并收到警告消息:gcc:warning:couldn’tunderstandkern.osversion‘14.0.0'我在谷歌上搜索并找到https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407我尝试应用补丁做:sudopatch-p1在gcc文件夹中:/usr/local/bin/gcc我收到了消息:can'tfindfiletopatchatinputline5Perhapsyouusedthewrong-por--str

c++ - 在 C++ 中处理字符串时如何使用 memset?

已结束。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭3年前。Improvethisquestion我来自Python背景,最近学习C++。我正在学习一个名为memset的C/C++函数,并按照网站https://www.geeksforgeeks.org/memset-in-cpp/的在线示例进行操作。我遇到了一些编译错误:/***@author:BhishanPoudel*@file:a02_

c++ - 警告 C4800 : 'int' : forcing value to bool 'true' or 'false' (performance warning)

我的代码中有这个问题:boolCBase::isNumber(){return(id&MID_NUMBER);}boolCBase::isVar(){return(id&MID_VARIABLE);}boolCBase::isSymbol(){return(id&MID_SYMBOL);} 最佳答案 仅供引用:强制转换不会隐藏警告bydesign.类似return(id&MID_NUMBER)!=0;应该明确说明“我要检查这个值是否为零”并让编译器高兴 关于c++-警告C4800:'in

c++ - C++ 程序员应该避免 memset 吗?

听说c++程序员应该避免memset,classArrInit{//!inta[1024]={0};inta[1024];public:ArrInit(){memset(a,0,1024*sizeof(int));}};所以考虑到上面的代码,如果你不使用memset,你怎么能让一个[1..1024]填充零?C++中的memset有什么问题?谢谢。 最佳答案 在C++中,std::fill或std::fill_n可能是更好的选择,因为它是通用的,因此可以对对象和POD进行操作。但是,memset对原始字节序列进行操作,因此不应用于初始

c++ - Memset 定义和使用

memset()函数有什么用处?Definition:Setsthefirstnumbytesoftheblockofmemorypointedbyptrtothespecifiedvalue(interpretedasanunsignedchar).这是否意味着它对内存地址中的值进行硬编码?memset(&serv_addr,0,sizeof(serv_addr)是我试图理解的例子。有人可以用非常简单的方式解释一下吗? 最佳答案 memset()是一个相对简单的操作的非常快速的版本:void*memset(void*b,intc,

c++ - C/C++ : How to use the do-while(0); construct without compiler warnings like C4127?

我经常在我的#defines中使用do-while(0)结构,原因描述为inthisanswer。.此外,我正在尝试使用编译器的尽可能高的警告级别来捕捉更多潜在问题,并使我的代码更加健壮和跨平台。所以我通常将-Wall与gcc和/Wall与MSVC一起使用。不幸的是,MSVC提示do-while(0)构造:foo.c(36):warningC4127:conditionalexpressionisconstant我应该怎么处理这个警告?只是对所有文件全局禁用它?对我来说这似乎不是一个好主意。 最佳答案 总结:在这种特殊情况下,此警告

C++ boost : what's the cause of this warning?

我有一个带有Boost的简单C++,如下所示:#includeintmain(){std::stringlatlonStr="hello,ergr()()rg(rg)";boost::find_format_all(latlonStr,boost::token_finder(boost::is_any_of("(,)")),boost::const_formatter(""));这很好用;它将()的每次出现替换为""但是,我在编译时收到此警告:我使用的是MSVC2008,Boost1.37.0。1>Compiling...1>mainTest.cpp1>c:\work\minescou