我首先认为它是 python,因为该文件名为 macros.py。但有人说不是。
v8 引擎的这一部分是在另一个讨论的中间点。
# Constants. The compiler constant folds them.
define INFINITY = (1/0);
我还没有在其他语言中看到过类似的东西。这种语言(py?/js?)允许这种表达的机制是什么?
我首先认为它是 python,因为该文件名为 macros.py。但有人说不是。
v8 引擎的这一部分是在另一个讨论的中间点。
# Constants. The compiler constant folds them.
define INFINITY = (1/0);
我还没有在其他语言中看到过类似的东西。这种语言(py?/js?)允许这种表达的机制是什么?
该行不是有效的 Python 语法。Python 语言没有const
类型的概念,也没有任何macro
语法。
该.py
文件的扩展名具有高度误导性;只有一行可能包含也可能不包含实际的 Python 语法:
# Macros implemented in Python.
python macro CHAR_CODE(str) = ord(str[1]);
该文件实际上是由Python 脚本解析的,因此它充其量是一种自定义的特定于域的语言。从顶部的注释来看,未标记为 Python 代码的宏python macro
似乎用于将JavaScript代码转换为字符数组:
# This is a utility for converting JavaScript source code into C-style
# char arrays. It is used for embedded JavaScript code in the V8
# library.
在JavaScript代码中,(1/0)
产生浮点无穷大:
> (1/0)
Infinity
而在 Python 代码中,这会引发异常:
>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
但是你不需要这样的技巧,float('inf')
如果你真的需要引用无穷大,你可以使用这些技巧。