草庐IT

max_compilations_rate

全部标签

c++ - 在常量表达式中使用 numeric_limits::max()

我想在一个类中定义一个常量,它的值是最大可能的int。像这样的:classA{...staticconstintERROR_VALUE=std::numeric_limits::max();...}此声明无法编译并显示以下消息:numeric.cpp:8:error:'std::numeric_limits::max()'cannotappearinaconstant-expressionnumeric.cpp:8:error:afunctioncallcannotappearinaconstant-expression我明白为什么这不起作用,但有两件事在我看来很奇怪:在我看来,在常量

c++ - 如何便携地找出 min(INT_MAX, and(INT_MIN))?

我怎样才能便携地找出INT_MAX和abs(INT_MIN)中的最小值?(这是INT_MIN的数学绝对值,而不是对abs函数的调用。)它应该与大多数系统中的INT_MAX相同,但我正在寻找一种更便携的方式。 最佳答案 而典型值为INT_MIN为-2147483648,典型值为INT_MAX是2147483647,标准不保证。TL;DR:您要搜索的值是INT_MAX在符合要求的实现中。但是计算min(INT_MAX,abs(INT_MIN))不便携。INT_MIN的可能值和INT_MAXINT_MIN和INT_MAX由附件E(实现限制

c++ - 错误 : 'INT32_MAX' was not declared in this scope

我收到了错误error:'INT32_MAX'wasnotdeclaredinthisscope但是我已经收录了#include我正在使用命令在(g++(GCC)4.1.220080704(RedHat4.1.2-44)上编译它g++-m64-O3blah.cpp我需要做任何其他事情来编译它吗?还是有另一种C++方法来获取常量“INT32_MAX”?谢谢,如果有什么不清楚的地方请告诉我! 最佳答案 引自手册页,“只有在包含__STDC_LIMIT_MACROS之前定义时,C++实现才应定义这些宏”。那就试试吧:#define__ST

c++ - 浮点提升 : stroustrup vs compiler - who is right?

在Stroustrup的新书“C++编程语言-第四版”的第10.5.1节中,他说,在执行算术运算之前,整数提升用于从较短的整数类型创建整数,类似地,浮点-点提升用于从float中创建double。我使用以下代码确认了第一个声明:#include#includeintmain(){shorta;shortb;std::cout用vc++输出“int”,用gcc输出“i”。但是用float而不是短裤测试它,输出仍然是“float”或“f”:#include#includeintmain(){floata;floatb;std::cout根据Stroustrup的说法,浮点提升规则没有异常(

c++ - 为什么 std::max 返回错误的值?

这个问题在这里已经有了答案:Correctimplementationofmin(2个回答)关闭7年前。在CppCon2014的“GrilltheCommittee”session上,委员会成员WalterBrown提到,如果两个参数的值相等,std::max会返回错误的值。这被接受,没有评论,也没有详细说明。他这是什么意思?为什么返回哪个值很重要? 最佳答案 如果min和max只用在有序集合上,所有合理的定义都是等价的。然而,在实践中,min和max用于预排序集:在其中您可以有两个排序相同但不完全相同的元素的集合。例如,您可能正在

c++ - 为什么 std::string::max_size 不是编译时常量?

std::string提供了一个max_size()方法来确定它可以包含的最大元素数。然而,一般来说,要计算出字符串的最大长度,程序员必须创建一个(可能为空的)字符串对象。如果这个类不需要程序员提供任何信息,为什么max_size()不能作为编译时常量使用?字符串计算其最大大小是否需要某种运行时信息? 最佳答案 一个原因是max_size函数根本不是很有用,委员会认为尝试修复它不值得。所以它就保持原样,因为它是文档化界面的一部分。参见库缺陷报告#197:http://www.open-std.org/jtc1/sc22/wg21/d

c++ - std::numeric_limits::max 的语法错误

我的类结构定义如下:#includestructheapStatsFilters{heapStatsFilters(size_tminValue_=0,size_tmaxValue_=std::numeric_limits::max()){minMax[0]=minValue_;minMax[1]=maxValue_;}size_tminMax[2];};问题是我不能使用'std::numeric_limits::max()'并且编译器说:错误8错误C2059:语法错误:'::'Error7errorC2589:'(':'::'右侧的非法token我使用的编译器是VisualC++11

c++ - 我可以使用 Visual Studio 201 0's C++ compiler with Visual Studio 2008' s C++ 运行时库吗?

我有一个应用程序需要在Windows2000上运行。我也想使用VisualStudio2010(主要是因为auto关键字的定义发生了变化)。但是,我有点束手无策,因为我需要该应用程序能够在较旧的操作系统上运行,即:Windows2000WindowsXPRTMWindowsXPSP1VisualStudio2010的运行时库依赖于WindowsXPSP2中引入的EncodePointer/DecodePointerAPI。如果可以使用备用运行时库,是否会破坏依赖于VS2010中添加的C++0x功能的代码,例如std::regex? 最佳答案

c++ - 警告 C4003 : not enough actual parameters for macro 'max' - Visual Studio 2010 C++

在VisualStudio2010SP1上编译openFrameworks007项目时出现以下警告:d:\pedro\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(127):warningC4003:notenoughactualparametersformacro'max'd:\pedro\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(128):warningC4003:notenoug

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我应该怎么处理这个警告?只是对所有文件全局禁用它?对我来说这似乎不是一个好主意。 最佳答案 总结:在这种特殊情况下,此警告