草庐IT

compilations

全部标签

c++ - 当我收到此错误 : <mutex> is not supported when compiling with/clr 时如何实现非托管线程安全集合

我有一个C++应用程序,它由非托管C++、托管C++和c#组成。在非托管部分,我尝试使用std::mutex创建线程安全集合。但是,当我使用互斥体时,出现以下错误;errorC1189:#error:isnotsupportedwhencompilingwith/clror/clr:pure.知道为什么我不能使用互斥锁吗?有人可以推荐一个替代品,以便我可以创建一个线程安全的非托管集合吗? 最佳答案 不支持,因为std::mutex实现使用GetCurrentThreadId()。这是一个不应该在托管代码中使用的winapi函数,因为

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

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(

compilation - 编译时按架构排除 go 源文件

我正在为Windows编写一个包含多个包的Go程序。其中一个包是使用CGo调用在一些.h和.c文件中定义的一些函数。这些.c文件依赖于windows.h。由于在Windows平台上进行开发非常乏味,我想制作一个模型,然后在Linux上开发此文件中的功能。但是当我尝试编译时,我得到:fatalerror:windows.h:Nosuchfileordirectory由于go工具试图编译我的Windows相关文件。有没有办法解决这个问题?我知道把像#ifdef..importx#endif不是最佳实践,但在这种情况下,我需要一些东西来允许只编译“Linux”文件。

compiler-errors - Google Go 错误 - "cannot make type"

在我的Go代码中,我想创建一个自定义数据类型的数组。我打电话Blocks=make(*BlockData,len(blocks))我得到错误:cannotmaketype*BlockData我的BlockData类包含uint64、int64、float32、string、[]byte、[]string和[]*TransactionData等字段类型。最后一个是指向我的另一个自定义类的指针数组。我应该怎么做才能修复这个错误? 最佳答案 make()用于创建slice、贴图和channel。制作slice时,类型名称前面必须有[]。使

compilation - go build 工作正常,但 go run 失败

我在一个目录下的主包中有几个文件:main.go配置文件server.go当我这样做时:“开始构建”程序构建完美并且运行良好。当我这样做时:“gorunmain.go”它失败了。输出:#command-line-arguments./main.go:7:undefined:Config./main.go:8:undefined:Serverundefinedsymbol是结构,它们是大写的,所以应该被导出。我的Go版本:go1.1.2linux/amd64 最佳答案 这应该可以工作gorunmain.goconfig.goserve

compiler-construction - 使用 Go 反编译已编译的程序

我用Go构建了一个简单的可执行程序。我已将代码编译成静态二进制程序。我想反编译输出的二进制文件,得到Go源码。这可能吗? 最佳答案 没有工具可以做到这一点,并且由于Go程序被编译成机器代码,它们不包含足够的信息来将它们转换回Go代码。不过,标准的拆卸技术仍然可行。 关于compiler-construction-使用Go反编译已编译的程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio