portability相关内容

如何在任何系统上开始学习汇编语言

我想学习汇编,但我对此不太确定,但因为汇编是低级编程语言,所以在Windows计算机上为打印Hello编写的代码将与在Mac上不同。 如何解决此问题(如果此问题确实存在),以及从哪里开始学习实际的语言。 推荐答案 首先,您需要很好地掌握像C这样的语言的编程,因为它和汇编之前一样低级--其他语言很棒,但隐藏了更多的低级细节。 C有指针,这是汇编语言中常用的,所以在C中我们可以 ..

什么是与`__ASM__Volatile(&Quot;";:&Quot;Memory&Quot;)`等价的C++11原子API

代码库具有定义为__asm__ volatile("" ::: "memory")的COMPILER_BARRIER宏。宏的目的是防止编译器跨障碍对读写进行重新排序。请注意,这显然是编译器障碍,不是处理器级内存障碍。 实际上,这是相当可移植的,因为在汇编模板中没有实际的汇编指令,只有volatile和memory装配器。因此,只要编译器支持GCCS扩展ASM语法,它就应该工作得很好。不过,如果可 ..
发布时间:2022-04-18 09:54:51 C/C++开发

如何使用 Mono 和 mkbundle 将简单的 .Net 控制台项目转换为可移植的 exe?

我想将我简单的纯 .Net 2.0 控制台实用程序转换为便携式 exe,我可以将它放在 U 盘上并运行,而不必担心 CLR 和框架库是否安装在特定机器上. Stackoverflow 已经有 一些关于使用 Mono 和 Mkbundle 用于从 .Net 项目创建独立的 Windows exe,但我想要的是一个紧凑但有用的 HOWTO. 从简单的 C# Visual Studio 项目 ..
发布时间:2022-01-23 14:31:22 C#/.NET

你可以在c中运行一个初始化函数吗?

在程序加载时是否有运行函数的机制或​​技巧? 我正在努力实现的目标...... void foo(void){}注册函数(foo); 但显然 register_function 不会运行. 所以 C++ 中的一个技巧是使用初始化来使函数运行 类似 int throwaway = register_function(foo); 但这在 C 中不起作用.所以我正在寻找一种使用 ..
发布时间:2022-01-19 00:01:35 其他开发

当 sizeof(char) != 1 时 C 中的字节精度指针算术

如何以单字节精度便携地执行指针运算? 请记住: char 在所有平台上都不是 1 字节 sizeof(void) == 1 仅在 GCC 中作为扩展提供 虽然某些平台可能有指针 deref 指针对齐限制,但算术可能仍需要比最小基本 POD 类型的大小更精细的粒度 解决方案 您的假设是有缺陷的 - sizeof(char) 被定义 为 1. 来自 C99 标准 (TC3 ..

#warning 预处理器指令的可移植性

我知道#warning 指令不是标准的C/C++,但有几个编译器支持它,包括gcc/g++.但是对于那些不支持它的人,他们会默默地忽略它还是会导致编译失败?换句话说,我可以在我的项目中安全地使用它而不破坏不支持它的编译器的构建吗? 解决方案 如果编译器不支持#warning,那么很可能会报错.与#pragma 不同,不建议预处理器忽略它不理解的指令. 话虽如此,我已经在各种不同(相当 ..

可以以便携式方式使用新的数组放置吗?

在将可移植代码用于数组时,是否可以实际使用placement new? 您从 new[] 返回的指针似乎与您传入的地址并不总是相同(5.3.4,标准中的注释 12 似乎确认这是正确的),但我不如果是这种情况,看看如何为数组分配一个缓冲区. 以下示例显示了该问题.此示例使用 Visual Studio 编译,导致内存损坏: #include #include ..
发布时间:2022-01-17 00:00:25 C/C++开发

“int"和“int"有什么区别?和“int_fast16_t"?

据我了解,C 规范说 int 类型应该是目标平台上最有效的类型,至少包含 16 位. int_fast16_t 的 C99 定义不也是这样吗? 也许他们把它放在那里只是为了保持一致性,因为需要其他 int_fastXX_t? 更新 总结以下讨论: 我的问题在很多方面都是错误的.C 标准没有为 int 指定位数.它给出了它必须包含的范围 [-32767,32767]. ..
发布时间:2022-01-14 14:52:16 其他开发

如何确定宽度是“int"和“unsigned"两倍的整数类型?

中间乘法的值通常需要两倍的位数作为输入. //示例int foo(int a, int b, int carry, int rem) {int2x c;//某种类型在 `int` 处的宽度是原来的两倍c = (int2x)a * b + 进位;返回 (int) (c % rem);} 考虑到填充的可能性(这似乎会限制 sizeof() 的有用性)和非 2 的补码整数(这会限制位 dibblin ..
发布时间:2022-01-14 14:40:26 其他开发

更改 C++ 中的当前工作目录

如何以与平台无关的方式在 C++ 中更改我当前的工作目录? 我找到了与 Windows 兼容的 direct.h 头文件和与 UNIX/POSIX 兼容的 unistd.h. 解决方案 chdir 函数适用于 POSIX (manpage)和 Windows(称为 _chdir 那里,但别名 chdir 存在). 两种实现都在成功时返回零,在错误时返回 -1.正如您在手册页中看 ..
发布时间:2022-01-11 15:58:50 C/C++开发

可以打包 Anaconda 以进行便携式零配置安装吗?

我想将 Python 部署给我组织中的非程序员,以便安装过程完全包括从 Perforce 同步一个目录,并且可能运行一个设置环境变量的批处理文件. 是否可以将 Miniconda 打包成只需复制一个目录就可以“安装"?它的安装程序是做什么的? 这样做的原因是,我想通过为我们的艺术家提供可以从命令行运行的 Python 脚本来自动执行某些任务.但是我需要将解释器安装到他们的机器上,而不必 ..
发布时间:2022-01-10 21:26:04 Python

结束迭代器递减的可移植性如何?

刚刚在我的公司源代码中遇到了 end() 迭代器的减量,这对我来说看起来很奇怪.据我记得,这适用于某些平台,但不适用于其他平台.也许我错了,但是我在标准中找不到任何有用的东西.标准只说 end() 返回一个迭代器,它是过去的值,但它保证是可递减的吗?这样的代码如何符合标准? std::list::iterator it = --l.end(); 提前致谢. 解决方案 我认为这是相关的子 ..
发布时间:2022-01-10 14:19:07 C/C++开发

使用 Python 的 ftplib 获取目录列表,可移植

您可以使用 ftplib 在 Python 中获得完整的 FTP 支持.然而,获取目录列表的首选方式是: # 文件:ftplib-example-1.py导入ftplibftp = ftplib.FTP("www.python.org")ftp.login("匿名", "ftplib-example-1")数据 = []ftp.dir(data.append)ftp.quit()对于数据行:打印 ..
发布时间:2022-01-09 11:11:45 Python

结束迭代器递减的便携性如何?

刚刚在我公司的源代码中遇到了 end() 迭代器的递减,这对我来说看起来很奇怪.据我所知,这适用于某些平台,但不适用于其他平台.也许我错了,但是我在标准中找不到任何有用的东西.标准只说 end() 返回一个迭代器,它是过去结束的值,但它保证是可递减的吗?这样的代码如何符合标准? std::list::iterator it = --l.end(); 提前致谢. 解决方案 我认为这是相关 ..
发布时间:2022-01-07 11:11:11 C/C++开发

包装器、绑定和端口之间有什么区别?

在软件可移植性上下文中,这三个概念之间有什么区别? 比如我想使用ncurses库,原来的ncurses库是写在C,但我的应用程序是用 C++ 编写的,然后我找到了“ncurses 包装器"、“绑定到 ncurses"和“ncurses 端口".我应该使用哪个? 每种方法的优缺点是什么? 解决方案 A wrapper 是一个位于其他代码之上的一小段代码以回收其功能,但具有不同的界 ..
发布时间:2022-01-04 15:53:02 其他开发

在 C++ 中,将静态成员函数指针用于 C API 回调是否安全/可移植?

在 C++ 中,将静态成员函数指针用于 C API 回调是否安全/可移植?静态成员函数的 ABI 和 C 函数一样吗? 解决方案 根据 C++ 标准,它是不安全的.如此SO发布中所述: 在 C++ 中实现的 C 回调函数必须是 extern “C".它似乎在类中作为静态函数工作,因为类静态函数通常使用与 C 函数相同的调用约定.但是,这样做是一个等待发生的错误(请参阅下面的评论),所 ..
发布时间:2022-01-03 08:08:06 C/C++开发

我怎样才能拥有便携式 Emacs?

有没有办法从 USB 驱动器运行 Emacs?我是 Windows 用户,我希望无需安装 Emacs 即可在任何 PC 上使用它. 解决方案 是的,Windows 的“普通"Emacs 发行版是预编译的,无需安装即可运行.只需从通常的地方获取其中一个 *.zip 文件,将其解压到一个U盘,直接使用即可.(实际的二进制文件在“bin/"目录中.) 您可能唯一想做的就是将它设置为始终在 ..