草庐IT

portability

全部标签

c++ - OpenGL:混叠是一种可预测且一致的现象吗?

这可能是一个奇怪的问题,但我需要知道OpenGL为绘制的几何体(多边形、线等)的边缘添加别名的方式是否“一致”,这意味着它在不同的平台/硬件上看起来是一样的。在这种情况下,锯齿是“抗锯齿”旨在消除的锐边。但是我想要锯齿,并且想将它用于需要锯齿效果像素完美的动画技术(它用于Sprite类型效果)。这是否可行,或者是否无法预测它将如何在不同计算机之间使用别名? 最佳答案 不,不是。引用规范(任何版本,附录A:不变性):TheOpenGLspecificationisnotpixelexact.Itthereforedoesnotguar

c++ - 可移植 C++ 03 精确宽度类型

背景不幸的是,当前的C++标准缺少在stdintheader中定义的C99精确宽度类型。我能找到的下一个最好的东西(就可移植性而言)是Boost的cstdint.hpp实现,来自Boost.Integer图书馆。疑虑也就是说,我遇到了一些问题:Boost的实现将所有typedef转储到boostnamesapce中(而不是像boost::stdint)。这非常丑陋,因为现在您要么被迫仅对您感兴趣的类型使用using指令(这是一项额外的维护工作),要么将整个boostnamespace到global¹范围(这违背了namespace的要点)。例如,我当然可以变得冗长并在任何地方键入boo

c++ - "thread-local storage not supported for this target",适合#ifdef?

由于每个编译器都有自己的线程本地存储版本,我最终为它创建了一个宏。现在唯一的问题是GCC(关闭了pthreads),这给了我:“此目标不支持线程本地存储”很公平,因为在这种情况下pthreads实际上是关闭的。问题是,是否有一种通用的方法可以使用一些宏来检测这一点,例如#ifdef__GCC_XXX_NO_THREADS_XXX?编辑:请参阅下面接受的答案。另外,这是我的懒惰解决方案:$touchtest.c$gcc-E-dMtest.c>out.1$gcc-pthread-E-dMtest.c>out.2$diffout.*28a29>#define_REENTRANT1这是在Mac

c++ - 您如何处理平台之间变化的整数的 native 大小?

恐怕我已经知道了这个问题的答案,但我想确定...我有一个相当大的项目,它有一个typedef原生类型的头文件:typedefunsignedlongintu32;typedefsignedlongints32;//etc...不可避免的事情已经发生,我现在正尝试在long是64位而不是32位的系统上编译。修复它的最佳方法是什么?我可以使用int(或来自stdint.h的int32_t/uint32_t)来typedef满足我所知道的平台上的32位大小,但这似乎仍然值得怀疑。printf样式函数也存在问题,其中使用了%ld(编译器提示并希望看到%d)。这些都必须更改,不是吗(也许在int

c++ - 当可移植性很重要时,使用 C++ 0x/TR1 是否安全?

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:

c++ - 将 C++ 代码移植到 MacOS 有哪些建议?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。对于即将进行的项目,计划将在Windows和Linux上编译的现有C++代码移植到MacOS(leopard)。该软件是命令行应用程序,但可能计划使用GUI前端。MacOS使用g++编译器。通过使用与Linux相同的编译器,看起来不会有任何问题,但总是存在。移植期间有什么建议或者需要注意的问题吗?

c++ - Qt 中的信号和槽到底是什么?

我知道它们在概念上是如何工作的,但是信号和槽在Qt框架中是如何实现的?QtCreator将它们视为关键字,但它们只是一组宏,还是在编译这些源文件之前需要特殊的预处理器?换句话说,如果我在我的代码中使用Qt的信号/槽功能,我可以轻松地在任何C++编译器上编译它吗? 最佳答案 Qt的许多功能(包括信号)需要对源进行预处理usingtheQtMeta-ObjectCompiler(MOC).如果您使用Qt的信号功能,您可以在Qt支持的任何编译器和平台上编译您的源代码。如果您需要在Qt不支持的平台上进行编译,您可能会倒霉,或者至少无法进行很

c++ - 在包含 float 的结构上使用 memset()

在一个C/C++混合项目中,我发现了一些我可以简化为的代码#includestructStructContainingDouble{doubled;///otherelementsomitted};voidclear(StructContainingDouble*p){memset(p,0,sizeof*p);}不停止Cppcheck以引发可移植性警告Usingmemset()onstructwhichcontainsafloatingpointnumber.消息是正确的,但是由于float被声明为double,所以它似乎是误报,因为在double中,(正)零值是按照IEEE754标准

c++ - 内联汇编会影响可移植性吗?

假设您编写了可在不同平台上流畅运行的可移植C++代码。要进行一些修改以优化性能,您可以在代码中使用内联汇编。这是一个好的做法(搁置编译器优化)还是会给可移植性带来麻烦? 最佳答案 显然它破坏了可移植性——代码只能在汇编语言所针对的特定体系结构上工作。此外,这通常是浪费时间-编译器的优化器几乎肯定比您更擅长编写汇编代码。 关于c++-内联汇编会影响可移植性吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 可移植 VFS 库 C++

有没有人遇到过满足这些要求的优秀文件系统虚拟化库?跨平台:至少是Win32和Linux,最好是OSX支持协议(protocol):中小企业FTPSFTP本地FS基于URL与客户端工厂的抽象C++接口(interface):smb://[用户[:密码]@]主机/共享/路径...ftp://[用户[:密码]@]主机/路径...sftp://[用户[:密码]@]主机/路径...文件://路径...提供以下方法:列出目录,最好返回具有类似structstat属性的条目移动复制删除数据奖励:低级文件访问接口(interface)(打开、读取、写入、关闭...)我见过一些满足这些要求的子集的好库(