恐怕我已经知道了这个问题的答案,但我想确定...我有一个相当大的项目,它有一个typedef原生类型的头文件:typedefunsignedlongintu32;typedefsignedlongints32;//etc...不可避免的事情已经发生,我现在正尝试在long是64位而不是32位的系统上编译。修复它的最佳方法是什么?我可以使用int(或来自stdint.h的int32_t/uint32_t)来typedef满足我所知道的平台上的32位大小,但这似乎仍然值得怀疑。printf样式函数也存在问题,其中使用了%ld(编译器提示并希望看到%d)。这些都必须更改,不是吗(也许在int
C++03缺少一些我喜欢使用的东西:std::shared_ptr、std::function和std::bind。我们不能完全切换到C++11,因为该项目需要使用较旧的libstdc++版本。我知道Boost中也有这个东西,但由于其他原因我们不能使用它。因此我们开始使用C++0x/TR1,我们目前使用的所有编译器版本都支持它。但是我们遇到了一些麻烦:很少有关于TR1是在哪个版本的Clang/MSVC/GCC中实现的信息我无法弄清楚-std=c++0x开关在Clang中的作用,没有它也能正常编译我不确定要使用什么namespace,例如std::tr1::shared_ptr与std:
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。对于即将进行的项目,计划将在Windows和Linux上编译的现有C++代码移植到MacOS(leopard)。该软件是命令行应用程序,但可能计划使用GUI前端。MacOS使用g++编译器。通过使用与Linux相同的编译器,看起来不会有任何问题,但总是存在。移植期间有什么建议或者需要注意的问题吗?
我知道它们在概念上是如何工作的,但是信号和槽在Qt框架中是如何实现的?QtCreator将它们视为关键字,但它们只是一组宏,还是在编译这些源文件之前需要特殊的预处理器?换句话说,如果我在我的代码中使用Qt的信号/槽功能,我可以轻松地在任何C++编译器上编译它吗? 最佳答案 Qt的许多功能(包括信号)需要对源进行预处理usingtheQtMeta-ObjectCompiler(MOC).如果您使用Qt的信号功能,您可以在Qt支持的任何编译器和平台上编译您的源代码。如果您需要在Qt不支持的平台上进行编译,您可能会倒霉,或者至少无法进行很
在一个C/C++混合项目中,我发现了一些我可以简化为的代码#includestructStructContainingDouble{doubled;///otherelementsomitted};voidclear(StructContainingDouble*p){memset(p,0,sizeof*p);}不停止Cppcheck以引发可移植性警告Usingmemset()onstructwhichcontainsafloatingpointnumber.消息是正确的,但是由于float被声明为double,所以它似乎是误报,因为在double中,(正)零值是按照IEEE754标准
假设您编写了可在不同平台上流畅运行的可移植C++代码。要进行一些修改以优化性能,您可以在代码中使用内联汇编。这是一个好的做法(搁置编译器优化)还是会给可移植性带来麻烦? 最佳答案 显然它破坏了可移植性——代码只能在汇编语言所针对的特定体系结构上工作。此外,这通常是浪费时间-编译器的优化器几乎肯定比您更擅长编写汇编代码。 关于c++-内联汇编会影响可移植性吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c
有没有人遇到过满足这些要求的优秀文件系统虚拟化库?跨平台:至少是Win32和Linux,最好是OSX支持协议(protocol):中小企业FTPSFTP本地FS基于URL与客户端工厂的抽象C++接口(interface):smb://[用户[:密码]@]主机/共享/路径...ftp://[用户[:密码]@]主机/路径...sftp://[用户[:密码]@]主机/路径...文件://路径...提供以下方法:列出目录,最好返回具有类似structstat属性的条目移动复制删除数据奖励:低级文件访问接口(interface)(打开、读取、写入、关闭...)我见过一些满足这些要求的子集的好库(
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我想要一个可移植C++IDE来进行一般开发,以及开发基本的WindowsGUI应用程序。在我的研究中,我发现了这个(最新版本日期):CodeLiteIDE(2010-04-02)Ultimate++(2010-03-16)QtCreat
这对我来说似乎有点倒退,但它有效:#includenamespacenTest{structcTest{};voidfTest(cTest&x){std::cout通常,您需要nTest::才能访问fTest,但它属于nTest的参数似乎将nTest添加到搜索fTest的可能范围列表中。参数范围影响函数查找对我来说似乎很奇怪。这在GCC中编译得很好,但我想知道这种用法是否可移植?这个范围机制的官方定义是什么? 最佳答案 那是ADL(参数相关查找)或KoenigLookup(针对功能的设计者)。该功能的目的是,在许多情况下,相同的命名
使用#pragmaoptimize的代码的可移植性如何?大多数编译器都支持它吗?对此#pragma的支持有多完整? 最佳答案 #pragma是编译器添加非认可和不可移植语言扩展的认可和可移植方式*.基本上,您永远无法确定,并且至少有一个主要的C++编译器(g++)不按原样支持此pragma。*:来自C++标准(N3242):16.6Pragmadirective[cpp.pragma]Apreprocessingdirectiveoftheform#pragmapp-tokensoptnew-linecausestheimpleme