草庐IT

static-compilation

全部标签

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++ - 即使模板函数在任何地方都没有调用,static_assert 也无法编译

我使用带有标志c++0x的g++4.6.3(当前是ubuntu12.04的默认包),我偶然发现了这个:templateinlineTgetValue(AnObject&){static_assert(false,"thisfunctionhastobeimplementedfordesiredtype");}编译错误:static_assertionfailed"thisfunctionhastobeimplementedforthedesiredtype"即使我还没有在任何地方调用此函数。这是一个g++错误吗?仅当在代码中的某处调用此函数时才应实例化此函数。

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++ - 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++ - assert 和 static_assert 有什么区别?

我知道static_assert在编译时进行断言,而assert在运行时进行断言,但实际上有什么区别?据我了解,在内心深处它们是代码片段,例如if(condition==false)exit();谁能给我一个例子,说明onlystatic_assert或onlyassert会在哪里工作?他们能做一些简单的if语句做不到的事情吗?使用它们是不好的做法吗? 最佳答案 你问了三个问题,所以我会试着回答每个问题。谁能给我一个例子,说明onlystatic_assert或onlyassert可以在哪里工作?static_assert非常适合在

c++ - static const 与 const static

我不明白我的C++类中这两个语句之间的区别:classMyClass{public:private:staticconstintvar=0;//Option1conststaticintvar=0;//Option2};b/w选项1和选项2有什么区别??他们都编译。 最佳答案 它们的意思完全一样。您可以自由选择您认为更容易阅读的内容。在C中,您应该将static放在开头,但这还不是必需的。我不确定C++在这方面是否遵循C。6.11.5Storage-classspecifiers1Theplacementofastorage-cla

c++ - 在 static_assert 输出中集成类型名称?

我喜欢提供有用的错误/消息,我也想为我的static_assert这样做s。问题是,它们依赖于模板参数。通常,由于引发的错误,这些参数将在途中或其他地方显示,但它们要么是模糊的,要么没有分组,因此它们是有意义的。示例:templatestructfake_dependency{staticboolconstvalue=false;};templatestructFoo{Foo(){}templateFoo(Fooconst&){static_assert(fake_dependency::value,"CannotcreateFoofromFoo.");}};intmain(){Foo

c++ - 模板元编程 - 使用 Enum Hack 和 Static Const 的区别

我想知道在使用模板元编程技术时使用静态const和enumhack有什么区别。EX:(通过TMP斐波那契)templatestructTMPFib{staticconstintval=TMPFib::val+TMPFib::val;};templatestructTMPFib{staticconstintval=1;};templatestructTMPFib{staticconstintval=0;};对比templatestructTMPFib{enum{val=TMPFib::val+TMPFib::val};};templatestructTMPFib{enum{val=1};

node.js - 如何摆脱错误 : "OverwriteModelError: Cannot overwrite ` undefined` model once compiled. “?

我有一个通用的方法来更新MongoDB中任何集合的文档吗?以下代码在文件名Deleter.js中module.exports.MongooseDelete=function(schemaObj,ModelObject);{varModelObj=newmongoose.Model("collectionName",schemaObj);ModelObj.remove(ModelObject);}并在我的主文件app.js中调用如下:varModObj=mongoose.model("schemaName",schemasObj);varModel_instance=newModObj(

node.js - 如何摆脱错误 : "OverwriteModelError: Cannot overwrite ` undefined` model once compiled. “?

我有一个通用的方法来更新MongoDB中任何集合的文档吗?以下代码在文件名Deleter.js中module.exports.MongooseDelete=function(schemaObj,ModelObject);{varModelObj=newmongoose.Model("collectionName",schemaObj);ModelObj.remove(ModelObject);}并在我的主文件app.js中调用如下:varModObj=mongoose.model("schemaName",schemasObj);varModel_instance=newModObj(