我听说 C 不是那么类型安全,我认为我可以将其用作我当前项目的优势。
我正在设计一个解释器,目标是让 VM 非常快,例如比 Ruby 和 Python 快得多。
现在我知道过早优化“是万恶之源”,但这是一个概念性问题。
- 我必须使用某种结构来表示我的语言中的所有值(从数字到字符串到列表和映射)
以下是否可能?
struct Value {
ValueType type;
void* value;
}
我会将实际值存储在别处,例如:一个单独的字符串和整数数组,然后 value* 将指向此表中的某个成员。
我总是会通过类型变量知道值的类型,因此不会有类型错误的任何问题。
现在:
这在语法和打字方面是否可行?
最佳答案
是的,您可以使用 void*
指向任何内容,然后在需要时将其转换为正确的类型(这就是 malloc
等可以工作的方式)。
void*
基本上是“指向任意内存块的指针”。
关于C:指向任何类型的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935955/