问题标签 [portability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
361 浏览

c - Unix/C 中的数据库独立性

我们有一个用 C 语言编写并在 Solaris 和 Linux 下运行的系统,它使用 Sybase CT 库来访问 Sybase 数据库。我们从内部开发的 DDL 生成表定义、索引、存储过程和 C 代码,以减少工作量和错误。

我们希望实现数据库独立性,因此我们可以添加(作为第一个开始)Oracle 支持。

我们正在考虑 ODBC 或 ESQL/C,但没有使用它们的经验。

您会建议什么解决方案(当然,最好是便宜且简单的解决方案)。是否有可能拥有单一来源的解决方案?

0 投票
6 回答
44426 浏览

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

我知道 #warning 指令不是标准的C /C++,但有几个编译器支持它,包括 gcc/g++。但是对于那些不支持它的人,他们会默默地忽略它还是会导致编译失败?换句话说,我可以在我的项目中安全地使用它而不破坏不支持它的编译器的构建吗?

0 投票
11 回答
48660 浏览

c++ - 是否有可移植的等价于 DebugBreak()/__debugbreak?

在 MSVC 中,DebugBreak()__debugbreak会导致调试器中断。在 x86 上它相当于写“_asm int 3”,在 x64 上它是不同的。使用 gcc(或任何其他标准编译器)编译时,我也想中断调试器。是否有独立于平台的功能或内在功能?我看到了关于这个的XCode 问题,但它似乎不够便携。

旁注:我主要想用它来实现 ASSERT,我知道我可以为此使用 assert(),但我也想在代码中写入 DEBUG_BREAK 或其他东西。

0 投票
7 回答
4109 浏览

javascript - 我想用 Javascript 编写桌面 OSX 或 Windows 应用程序——有什么经验吗?

我想为 Windows 和 OSX 编写一些小应用程序。

便携很好。例如,如果我能够长时间地观察 Tcl,那么用于 TCL 的简单 TclKit 解决方案就会很好地工作。

我正在考虑使用 Javascript + 扩展——我真的很喜欢 Javascript——在我看来应该有某种方法可以将 Javascript 引擎连接到 WxWin 甚至 Tk 工具集——它已经为 Perl、Python、Ruby 等完成了。为什么不是 JS?

任何意见表示赞赏。

0 投票
4 回答
784 浏览

c - 在 **portable C** 中,如何启动将命令的标准输入连接到启动器的标准输出的命令?

在 C 程序 (p1) 中,如何启动从 p1 的标准输出读取其标准输入的动态构造命令(及其参数)?

注意:

  1. 除了这个 stdout --> stdin 管道之外的方法也可以,只要 它在 Windows 和 Linux 上是可移植的。

  2. 我不能在这里使用 C++、Java、Perl、Ruby、Python 等。

此外,这是否会对其 Windows 构建有 MinGW 依赖项?

REOPENED:下面的问题为 Linux 提供了答案,但这个问题需要一种可移植的方法。 从 C 程序中执行程序

0 投票
1 回答
7139 浏览

c - GCC 中有固定大小的整数吗?

在 MSVC++ 编译器上,可以对具有特定大小的整数使用__int8__int16__int32类似类型。这对于需要使用低级数据结构(如自定义文件格式、硬件控制数据结构等)的应用程序非常有用。

我可以在 GCC 编译器上使用类似的等效项吗?

0 投票
1 回答
616 浏览

c++ - 在便携式应用程序中使用 Windows DLL

我已经构建了一个我想移植到 linux 的 windows C++ 应用程序。这样做的主要原因是便于我们的 IT 员工进行系统维护。除了运行这个应用程序的一台 Windows 机器之外,我们是一个仅限 linux 的操作。

此应用程序内置并在 Windows 上运行的原因是它使用 Windows API(dll 和标头)连接到属于外部方的服务器。这个连接使用了一些我真的不想弄乱的专有协议,(而且我认为我在合同上不允许这样做)所以我坚持使用 .dll。

这个dll是windows只是因为(我怀疑)dll中的windows sockets特定代码。除此之外,它并没有做很多高级的事情。在WINE中在Linux上运行应用程序和嗅探协议并自己重新实现DLL之间有什么方法可以让我让这个应用程序在Linux机器上运行?

这个想法的灵感来自关于 QT creator 的这个项目,所以任何允许我玩的解决方案都会非常酷。

0 投票
7 回答
631 浏览

windows - 文件路径可移植性

我有一个需要在 *nix 和 windows 下运行的程序。因为程序从文件中获取文件路径,所以问题是如何处理\vs/问题。

我目前的想法是放入一个正则表达式,根据我使用的系统将错误的转换为正确的。这将具有让任一类型在任一系统上工作的效果。除了现在我有两个问题之外,还有人看到其他问题吗?

(非常欢迎其他更好的解决方案)

编辑:主要问题是让 Windows 路径在 unix 上工作,而不是相反。

0 投票
6 回答
847 浏览

c++ - 如何以最小的性能损失同步 C 和 C++ 库?

我有一个 C 库,其中包含许多用于处理向量、矩阵、四元数等的数学例程。它需要保留在 C 中,因为我经常将它用于嵌入式工作和作为 Lua 扩展。此外,我有 C++ 类包装器,以允许更方便的对象管理和使用 C API 进行数学运算的运算符重载。包装器仅包含一个头文件,并且尽可能多地使用内联。

包装 C 代码与将实现直接移植和内联到 C++ 类中是否有明显的惩罚?该库用于时间关键型应用程序。那么,消除间接性带来的提升是否弥补了两个端口的维护难题?

C接口示例:

C++ 包装器示例:

0 投票
4 回答
644 浏览

java - 如何在混合 Java 版本的世界中使用泛型?

我非常喜欢泛型,并尽可能使用它们。时不时地,我需要在另一个项目中使用我的一个类,该项目必须在旧 JVM(5.0 之前)上运行,需要在 JavaME(也不允许泛型)或 Microsoft J#(非常差)上运行支持泛型)。

目前,我手动删除了所有泛型,这意味着也插入了许多强制转换。

由于泛型被认为是仅编译时的,并且每段泛型代码都可能自动转换为非泛型代码,我想知道是否有任何工具可以为我做到这一点。

如果没有这样的工具,我还能如何解决这个问题?我应该完全停止使用泛型吗?

已经有与字节码兼容性相关的答案。如果我出于某种原因需要源代码兼容性怎么办?