问题标签 [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.
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'
有(至少)两种可能的方法可以采取:
- 将其视为
'\n'
ASCII LF 字符,并在输出到文本流和从文本流输入时将其与 CR 转换(类似于 Windows 系统上的 LF 和 CR-LF 之间的转换);或者 - 视为
'\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 标准所要求的。
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 Alignment
to PowerPC
(而不是 68K 设置)会导致 Duktape 通过测试 - 但它仍然无法解决问题.
定义__m68k__
(或不定义)似乎不会影响任何事情。
我知道这是一个很长的机会,但是在花了大约 4 个小时更改了我在 IDE 和 duk_config 上可以找到的几乎所有设置之后,我没有想法 - 所以任何帮助将不胜感激。