portability相关内容

msys 路径转换(或 msys 的 cygpath?)

我需要将/DEF:c:\filepath\myLib.def" 命令行选项从 bash 脚本传递到 MS 编译器/链接器.路径是由 bash 脚本作为构建过程的一部分生成的.基本上,参数我的脚本通过的是: -DEF:/c/filepath/myLib.def MSYS 路径转换 无法正确处理,因为它不理解 /DEF: 部分.如果我这样做,它会起作用 -DEF=/c/filepath/myLi ..
发布时间:2022-01-02 12:53:03 其他开发

ppl 的替代品

在 我之前的问题 我已经问过了,我从 Microsoft 提供的 ppl.h 中触及了 parallel_for 主题. 但不久之后我意识到使用它会使他的应用程序不可移植(如果我是对的,它特定于 Microsoft(ppl.h 标头)). 在我看来,这破坏了 C++ 编程的一个非常重要的方面 - 可移植性,我只是不准备这样做. 所以我的问题是: 1. 我说使用 ppl 中的 paralle ..
发布时间:2021-12-30 21:34:04 C/C++开发

使用 Powershell 将文本文件文件夹打印为 PDF(保留原始基本名称)

第一次发帖 - 但我认为这是一个很好的帖子,因为我花了 2 天时间研究,与当地专家交谈,但仍然没有完成. 必须在大量文件(.txt 文件)上定期启动单独的打印作业,并且必须通过打印作业将其转换为保留原始库的本地文件(即通过 PDF 打印机)每个文件的名称.此外,脚本必须高度可移植. 如果文件只是被转换(而不是打印),原始基本文件名没有保留,或者打印过程需要在每次打印时手动交互,则无法实 ..
发布时间:2021-12-29 13:18:12 其他开发

CMAKE 中的操作系统特定说明:如何?

我是 CMAKE 的初学者.下面是一个简单的 cmake 文件,它在 mingw 环境窗口中运行良好.问题很明显出在 CMAKE 的 target_link_libraries() 函数上,我在其中链接了 libwsock32.a.在 Windows 中,这有效,我得到了结果. 然而,正如预期的那样,在 Linux 中,/usr/bin/ld 将查找 -lwsock32,而 Linux 操作 ..
发布时间:2021-12-26 21:31:06 服务器开发

围绕基本类型的 C++ 类包装器

我见过/使用过的许多库都有 typedef 来提供可移植的、固定大小的变量,例如 int8、uint8、int16、uint16 等,无论平台如何,它们的大小都是正确的(而 c++11 本身使用标头 stdint.h) 最近在我正在编写的一个小型库中使用二进制文件 i/o 后,我可以看到以这种方式使用 typedef 以确保代码可移植的好处. 但是,如果我要输入“namespace:: ..
发布时间:2021-12-25 13:20:33 C/C++开发

如何使用便携式 Python 安装外部库?

由于管理员权限,我无法在我的机器上安装 Python,但我确实成功下载/打开了 Portable Python.我在 Windows 7 64 位机器上.我如何才能使用以前的外部库,例如 Numpy 或 Gmpy? 解决方案 easy_install 正在尝试从源代码安装.gmpy 和 gmpy2 是 C 扩展,需要存在兼容的 C 编译器和其他库(GMP;以及 MPFR 和 MPC for ..
发布时间:2021-12-23 18:10:59 Python

C++ 中的固定宽度整数

有时我需要使用固定宽度的整数来与 PLC 等外部设备进行通信.我还使用它们来定义位掩码并执行图像数据的位操作.AFAIK C99 标准定义了固定宽度的整数,如 int16_t.但是,我使用的编译器 VC++ 2008 不支持 C99 并且 AFAIK Microsoft 不打算支持它. 我的问题是在 C++ 中使用固定宽度整数的最佳实践是什么? 我知道 VC++ 定义了像 __int1 ..
发布时间:2021-12-22 18:49:59 C/C++开发

C++中double/float类型的二进制序列化的可移植性

C++ 标准不讨论 float 和 double 类型的底层布局,只讨论它们应该表示的值范围.(对于有符号类型也是如此,是两个的恭维还是别的什么) 我的问题是:用于以可移植方式序列化/反序列化诸如 double 和 float 之类的 POD 类型的技术有哪些?目前看来,唯一的方法是将值按字面表示(如“123.456"),double 的 ieee754 布局并不是所有架构的标准. 解 ..
发布时间:2021-12-21 22:00:09 C/C++开发

为什么glibc的strlen需要这么复杂才能快速运行?

我正在查看 strlen 代码 这里 我想知道代码中使用的优化是否真的需要?例如,为什么像下面这样的东西不能同样好或更好? unsigned long strlen(char s[]) {无符号长我;for (i = 0; s[i] != '\0'; i++)继续;返回我;} 更简单的代码不是更好和/或更容易让编译器优化吗? 链接后面页面的strlen代码如下: /* 版权所有 (C) ..
发布时间:2021-12-20 15:40:19 其他开发

将缓冲区解释为结构的正确、可移植的方式

我的问题的背景是网络编程.假设我想在两个程序之间通过网络发送消息.为简单起见,假设消息看起来像这样,并且字节顺序不是问题.我想找到一种正确、可移植且有效的方法来将这些消息定义为 C 结构.我知道有四种方法可以解决这个问题:显式转换、通过联合转换、复制和封送. struct message {uint16_t 逻辑 ID;uint16_t 命令;}; 显式转换: void send_messa ..
发布时间:2021-12-20 10:47:05 其他开发

windows上的fadvise/madvise等价物是什么?

例如,在 UNIX 上,我可以使用 posix_fadvise(POSIX_FADV_WILLNEED) 告诉操作系统将来需要映射.然后它会根据需要预读数据. 如何判断对Windows的访问? 解决方案 实际上,正如 Anders 主要建议的那样,在 Windows 7 及更早版本中可用的内存管理功能中没有这种方法. 存在两种不同的方法来做类似的事情: 使用 ReadFi ..
发布时间:2021-12-18 08:25:49 服务器开发

什么是最小的 Windows (PE) 可执行文件?

作为编写编译器的前身,我试图了解 Windows(32 位)可移植可执行文件格式.我特别希望看到一个简单的可执行文件示例,它除了正确加载、运行和退出之外什么都不做. 我尝试编写和编译一个简单的 C 主函数,它除了生成的 .exe 大约 22KB 之外什么都不做,并且包含许多来自 KERNEL32.DLL 的导入(大概被 LIBC 用于设置环境、堆等).甚至 DOS 标题也可能更小(它当前打印 ..

如何检测我是在运行 MATLAB 还是 Octave?

我需要编写在 Octave 和 MATLAB 中运行的代码.问题是它需要做一些 GUI 的事情,而 MATLAB 和 Octave 的处理方式完全不同. 有什么方法可以检测我是在运行 MATLAB 还是 Octave,以便调用正确的函数? 解决方案 您可以使用以下测试来区分 Octave 和 MATLAB: isOctave =exist('OCTAVE_VERSION', 'bu ..
发布时间:2021-12-08 14:52:45 其他开发

是否有适用于 Windows (Visual C) 的 unistd.h 的替代品?

我正在将一个为 Unix 编写的相对简单的控制台程序移植到 Windows 平台 (VisualC++ 8.0).所有源文件都包含不存在的“unistd.h".删除它后,我收到了关于缺少 'srandom'、'random' 和 'getopt' 原型的抱怨.我知道我可以替换随机函数,而且我很确定我可以找到/修改 getopt 实现. 但我相信其他人也遇到了同样的挑战.我的问题是:Windo ..
发布时间:2021-12-05 19:04:11 C/C++开发

SO_REUSEADDR 和 SO_REUSEPORT 有何不同?

套接字选项SO_REUSEADDR 和SO_REUSEPORT 的手册页 和程序员文档对于不同的操作系统是不同的,并且通常非常混乱.有些操作系统甚至没有SO_REUSEPORT 选项.WEB 上充满了关于这个主题的自相矛盾的信息,通常您可以找到仅适用于特定操作系统的一个套接字实现的信息,这些信息甚至可能在文中都没有明确提及. 那么 SO_REUSEADDR 与 SO_REUSEPORT 究竟 ..
发布时间:2021-12-03 12:41:29 服务器开发

为什么位字节序是位域中的一个问题?

任何使用位域的可移植代码似乎都能区分小端和大端平台.有关此类代码的示例,请参见 linux 内核中 struct iphdr 的声明.我不明白为什么位字节序是一个问题. 据我所知,位域纯粹是编译器构造,用于促进位级操作. 例如,考虑以下位域:struct ParsedInt {无符号整数 f1:1;无符号整数 f2:3;无符号整数 f3:4;};uint8_t i;struct Par ..
发布时间:2021-12-01 23:55:57 其他开发

为什么我不应该#include ?

我用我的代码发布了一个问题,其唯一的 #include 指令如下: #include 我的老师告诉我这样做,但在评论部分我被告知我不应该这样做. 为什么? 解决方案 In包括 似乎是 Stack Overflow 上越来越常见的东西,也许是新添加的东西本学年的国家课程. 我认为这些优势是模糊的: 你只需要写一行#include 您无需查找所有内容所在的标准标题 ..

如何以可移植的方式验证ANSI C中的stdin缓冲区中是否有一些信息?

我正在尝试在 ANSI C 中开发一个可移植的函数,以验证 stdin 缓冲区是否为空.这个想法是用它来验证用户是否按下了某个键. 在 Windows 中,使用 kbhit(来自 conio.h)很容易做到这一点,但它依赖于操作系统. 不过,我想开发自己的便携功能. 解决方案 ANSI C 和当前的 C 标准都没有提供执行此操作的方法.它只能使用特定于实现的扩展来完成. ..
发布时间:2021-11-28 17:53:25 其他开发