问题标签 [mac-classic]

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 回答
9066 浏览

c++ - 旧 Mac OS 的 C 编译器下 '\n' 的值是什么?

背景:

在最高版本 9 的 Mac OS 版本中,文本文件的标准表示使用 ASCII CR(回车)字符(十进制值 13)来标记行尾。

Mac OS 10 与早期版本不同,它类似于 UNIX,并使用 ASCII LF(换行)字符(十进制值 10)来标记行尾。

问题是,在 OS X 之前的 Mac OS 版本中,字符常量'\n'和C 和 C++ 编译器的值是什么?'\r'

有(至少)两种可能的方法可以采取:

  1. 将其视为'\n'ASCII LF 字符,并在输出到文本流和从文本流输入时将其与 CR 转换(类似于 Windows 系统上的 LF 和 CR-LF 之间的转换);或者
  2. 视为'\n'ASCII CR 字符,不需要对输入或输出进行转换。

第二种方法会有一些潜在的问题。一是假设'\n'是 LF 的代码可能会失败。(无论如何,这样的代码本质上是不可移植的。)另一个是仍然需要有一个不同的值'\r',并且在基于 ASCII 的系统上 CR 是唯一合理的值。并且 C 标准不允许'\n' == '\r'(感谢 mafso 找到引用,5.2.2 第 3 段),所以有些必须'\r'.

当N小于 10在 Mac OS N下编译和执行时,这个 C 程序的输出是什么?

这个问题适用于 C 和 C++。我想两者的答案都是一样的。

答案也可能因一个 C 编译器而异——但我希望编译器实现者能够保持彼此的一致性。

需要明确的是,我不是在问 Mac OS 的旧版本使用什么表示来表示文本文件中的行尾。我的问题是专门关于常量的值'\n'以及'\r'C 或 C++ 源代码中的值。我知道打印'\n'(无论它的值是什么)到文本流会导致它被转换为系统的行尾表示(在本例中为 ASCII CR);该行为是 C 标准所要求的。

0 投票
0 回答
72 浏览

c++ - 如何让 Duktape 在 Mac 68k 上运行(就像在 PPC 上一样?)

我正在编写一个在 MacOS 7.x - 9.x 上运行的小应用程序(使用 Macintosh Toolbox),我决定包含 Duktape。

我使用在 MacOS 9 上运行的 CodeWarrior 6.0。
我使用低内存配置,在此处找到

当我为 PPC 编译时,它运行完美——但是当我为 68k 编译时,我得到了很多奇怪的行为和崩溃。

例如,如果我要调用duk_peval_string以下内容:

var i = 3;<- 没有错误
var i = 3; function a() { return 4; }<- 没有错误
var i = 3; function a() { return 4; } i = a();<-- "ReferenceError: -4e+0"
function a() { return 4; } i = a();<-- 启动时崩溃

我已启用自测 ( DUK_USE_SELF_TESTS) 以尝试找出可能发生的情况 - 在处理器设置下启用8-Byte Doubles和更改Struct Alignmentto PowerPC(而不是 68K 设置)会导致 Duktape 通过测试 - 但它仍然无法解决问题.

定义__m68k__(或不​​定义)似乎不会影响任何事情。

我知道这是一个很长的机会,但是在花了大约 4 个小时更改了我在 IDE 和 duk_config 上可以找到的几乎所有设置之后,我没有想法 - 所以任何帮助将不胜感激。