草庐IT

C++标准

全部标签

c++ - 在 C 中声明两个同名的全局变量

我在C中声明了两个同名的全局变量。它应该给出错误,因为我们不能在同一个存储类中声明同名变量。我已经在C++中检查过了——它给出了一个编译时错误,但在C中却没有。为什么?代码如下:inta;inta=25;intmain(){return0;}查看:CodeWrittenatIdeone我想大概是这个原因DeclarationandDefinitioninC但是在C++中却不是这样。我认为在C++中,无论变量是在全局范围还是在自动范围内声明,声明和定义都是同时发生的。谁能进一步阐明它。现在,当我两次定义变量并给它赋值两次时,它给我错误(而不是一个声明和一个定义)。代码:Twodefini

第十一章 Python 常用标准库

系列文章目录第一章Python基础知识第二章python字符串处理第三章python数据类型第四章python运算符与流程控制第五章python文件操作第六章python函数第七章python常用内建函数第八章python类(面向对象编程)第九章python异常处理第十章python自定义模块及导入方法第十一章python常用标准库第十二章python正则表达式第十三章python操作数据库文章目录系列文章目录描述系统管理:os获取文件属性:os.path与解释器交互:sys获取系统信息:platform查找文件:glob生成随机数:random执行shell命令:subprocess序列化与

c++ - SSE2 : Double precision log function

我需要日志功能的开源(无许可证限制)实现,有签名的东西__m128d_mm_log_pd(__m128d);它在英特尔短vector数学库(ICC的一部分)中可用,但ICC既不是免费的也不是开源的。我正在寻找仅使用内部函数的实现。它应该使用特殊的有理函数逼近。我需要一些几乎与cmath日志一样准确的东西,比如9-10位十进制数字,但速度更快。 最佳答案 我相信log2更容易计算。您可以将您的数字乘以/除以2的幂(非常快),使其位于(0.5,2],然后您使用Padeapproximant(取M接近N),这很容易一次又一次地得出all,

c++ - 在指定 C++ 异常和 pthread 取消的交互方面有什么进展吗?

最近,GNUC库使用DWARF2展开用于pthread取消,因此C++异常和pthread取消清理处理程序都通过公共(public)调用框架展开过程调用,该过程在必要时调用自动对象的析构函数。然而,据我所知,仍然没有指定(POSIX)线程和C++之间交互的标准,并且可能希望可移植的应用程序应该假设从取消清理上下文中抛出异常与调用longjmp,并且取消具有非平凡析构函数的实时自动对象的线程也是未定义的行为。是否有任何正在进行的标准化流程来处理这种交互,或者它是否可以预期在未来很长一段时间内未定义?C++11在其线程支持中是否有任何类似于POSIX线程取消的概念?

c - 为什么我不应该使用 __fastcall 而不是标准的 __cdecl?

我听一些人说__fastcall比__cdecl和__stdcall快,因为它把两个参数放在寄存器中,而不是一个其他电话;但是,另一方面,这不是C中使用的标准。我想知道是什么让__fastcall不像C中的标准那样令人讨厌,以及我什么时候会在我的代码中使用它。 最佳答案 x86平台的不同寻常之处在于它没有定义全局ABI和调用约定。Win32/x86可以,它在stdcall上标准化。调用约定之间存在各种权衡——将参数放在寄存器中速度更快,但它会强制调用者溢出之前使用这些寄存器的任何内容。因此很难预测哪个性能更好。重要的是要有一个统一的

c++ - 对于浮点值 a : Does a*0. 0 == 0.0 对于 a 的有限值总是求值为真?

我一直假设以下测试对于somefloat的有限值(没有INF,没有NAN)总是会成功:assert(somefloat*0.0==0.0);在Multiplyby0optimization据说doublea=0.0和doublea=-0.0严格来说不是同一件事。所以我想知道这是否会导致某些平台出现问题,例如上述测试的结果是否取决于abeeingpositiveornegative. 最佳答案 如果您的实现使用IEEE754算法(大多数都这样做),那么正零和负零将比较相等。由于表达式的左侧对于有限a只能是正零或负零,因此断言将始终为真

c++ - clang:强制循环展开特定循环

有没有办法告诉clang展开特定循环?谷歌搜索答案给我的命令行选项会影响整个编译器,而不是单个循环。GCC也有类似的问题---Tellgcctospecificallyunrollaloop---但那里提供的答案不适用于clang。那里建议的选项1:#pragmaGCCoptimize("unroll-loops")似乎被默默地忽略了。事实上#pragmaGCCakjhdfkjahsdkjfhskdfhd也被默默地忽略了。选项2:__attribute__((optimize("unroll-loops")))导致警告:warning:unknownattribute'optimize

c++ - 标准容器元素类型和std::allocator类型不一样是不是错了?

取自here(很旧):It'salsoimportantthatthetypeusedfortheallocatortemplateparameterandthetypeusedastheelementtypeinastandardcontaineragree.Forinstance:std::list>//Wrong!won'twork.问题以上说法是否正确(或曾经正确过)?无论我为T设置什么,我所做的任何测试似乎都可以正常工作在std::allocator.例如,std::vector>编译和工作正常推回和删除元素等。(据我所知,std::allocator::rebind::ot

c++ - C和C++中的编译器优化和临时分配

请查看以下在C和C++中有效的代码:externintoutput;externintinput;externinterror_flag;voidfunc(void){if(0!=error_flag){output=-1;}else{output=input;}}是否允许编译器以与下面类似的方式编译上面的代码?externintoutput;externintinput;externinterror_flag;voidfunc(void){output=-1;if(0==error_flag){output=input;}}换句话说,是否允许编译器生成(从第一个片段开始)始终向out

c++ - 什么是 "Clean C",它与标准 C 有何不同?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。纯C和C++中的C有什么区别?关于“CleanC”的一些细节是什么Lua基于?这些功能是什么?