草庐IT

max_packet_size

全部标签

c++ - 施放 ssize_t 或 size_t

在我的项目中使用的源文件中,ssize_t和size_t变量之间有一个比较:ssize_tsst;size_tst;if(sst==st){...}我想摆脱警告:warning:comparisonbetweensignedandunsignedintegerexpressions但我不确定,我应该将哪个变量转换为另一个变量?if((size_t)sst==st){...}或if(sst==(ssize_t)st){...}什么更安全、更好、更清洁?谢谢 最佳答案 这个问题没有唯一的正确答案。有几种可能的答案,具体取决于您对这些变量

带有初始化列表的 C++ 的 max() 返回乱序的字符串

max({"a","b","z","x"});returns"x"同时两者max({"a","b","z","x"});和max({'a','b','z','x'});按他们应该的方式返回“z”。为什么? 最佳答案 "a","b"等是字符串文字。这些衰减到constchar*在初始化列表中时。maxjust可能获得地址最高的那一个,但因为它使用operator比较它们,并且它们不是同一个数组的一部分,也不是同一个数组的一部分,比较的结果是未指定的(并且调用max将导致未定义的行为,因为要求类型为LessThanComparable)

c++ - constexpr 上下文中 std::array 指针的 size()

假设我有一个函数:inttest(std::array*data){charbuffer[data->size()*2];[...somecode...]}显然可以在编译时评估缓冲区的大小:数据的constexpr大小为8个元素,8*2=16字节。然而,当使用-Wall、-pedantic和-std=c++11编译时,我得到了臭名昭著的错误:warning:variablelengtharraysareaC99feature[-Wvla-extension]我认为这是有道理的:array::size()是constexpr,但它仍然是一个方法,在上面的函数中我们仍然需要取消引用一个指针

c++ - 为什么 Codan 找不到 size_t

我刚刚开始使用EclipseIndigo(来自Galileo),每次使用size_t时,我都会遇到一些红色的小错误。代码编译没有问题,但我怀疑我必须显式添加到包含目录的路径。我已经有常见的嫌疑人了。我正在使用Gnu工具链为ColdFire处理器进行交叉编译,因此除了来自芯片制造商的标准包含之外,我还包含m68k-elf下的包含\include\include\c++\4.2.1\include\c++\4.2.1\include\include\c++\4.2.1\m68k-elf更新我注意到这个工具链唯一存在stddef.h的地方是lib目录gcc-m68k\lib\gcc\m68k

c++ - std::vector::resize(size_type) 是否应该(在 C++11 中)适用于默认的可构造 value_type int[4]?

在C++11中,std::vector::resize()有两个版本:voidresize(size_typecount);voidresize(size_typecount,constvalue_type&value);我理解(正如对thisquestion的一个答案的评论之一所建议的那样)第一个要求value_type是默认可构造的,而第二个要求它是可复制构造的。但是,(gcc4.7.0)usingnamespacestd;typedefintblock[4];vectorA;static_assert(is_default_constructible::value,";-(");

c++ - 无法调用 std::max 因为 minwindef.h 定义了 "max"

这个问题在这里已经有了答案:Howtocallstd::min()whenminhasbeendefinedasamacro?(5个答案)warningC4003:notenoughactualparametersformacro'max'-VisualStudio2010C++(4个答案)关闭8年前。我将如何实际调用std::max?该代码不会在visualstudio2013中编译,因为它采用“max”作为宏。std::max(...);期望在“std::”之后有一个标识符。

c++ - 为什么 C++ 标准库不包含 std::min、std::max 的非常量版本?

我依稀记得我在某个地方看到过关于这个的讨论,但我现在找不到了;“non-constminmaxc++”和类似的变体没有给出相关结果。为什么C++标准库不包含以下std::min的非常量重载(对于std:max也是如此)?templateT&min(T&a,T&b);有时它可能很有用,例如如果我想增加较低的数字:std::min(x,y)+=1;这个过载会导致什么问题吗? 最佳答案 这是由HowardE.Hinnant在N2199:"Improvedmin/max"中提出的,根据thisdiscussion被拒绝了。在同一次讨论中,霍

c++ - 为什么 INTEGRAL_MAX_BITS 会返回小于 64 的值?

我正在尝试弄清楚Windows宏_INTEGRAL_MAX_BITS的预期值。MSDN的__int64documentation说只要使用__int64就应该使用这段代码#ifdefined(_INTEGRAL_MAX_BITS)&&\_INTEGRAL_MAX_BITS>=64typedefsigned__int64int64;typedefunsigned__int64uint64;#else#error__int64typenotsupported#endif为什么我会看到INTEGRAL_MAX_BITS的值低于32?thisquestion中的答案显示在32位Windows上

c++ - 为什么在 size_t 的情况下抛出 bad_alloc() 异常

我正在处理下面的代码,当我执行这段代码时,我得到了一个std::bad_alloc异常:int_tmain(intargc,_TCHAR*argv[]){FILE*pFile;size_tstate;pFile=fopen("C:\\shared.tmp","rb");if(pFile!=NULL){size_trt=fread(&state,sizeof(int),1,pFile);char*string=NULL;string=newchar[state+1];fclose(pFile);}return0;}下面这行导致抛出异常:string=newchar[state+1];为什

c++ - 通过接近 MAX_PATH 长度的 Windows 网络访问文件

我正在使用C++并通过网络访问UNC路径。此路径略大于MAX_PATH。所以我无法获得文件句柄。但是如果我在有问题的计算机上运行程序,路径不会大于MAX_PATH。所以我可以获得一个文件句柄。如果我重命名文件以减少字符(减去计算机名称的长度),我就可以访问该文件。即使知道UNC路径中的计算机名称使其超过MAX_PATH限制,也可以通过网络访问该文件吗? 最佳答案 我记得有一些功能,例如在路径的开头使用\\?\来绕过MAX_PATH限制。这是MSDN上的引用:http://msdn.microsoft.com/en-us/librar