我读到C编译器无法检测到动态语义错误,因为语义分析阶段只捕获静态语义错误。
然后C编译器的哪个组件检查动态语义错误?
答案 0 :(得分:2)
C编译器的哪个组件检查动态语义错误?
没有阶段。根据定义,它们在运行时被检测到(如果有的话)。
通过动态语义错误,我的意思是访问数组的索引(越界)。
C中没有这样的检查。
我在某地读过编译器生成用于检查动态语义错误的代码。
不在C中。
我不确定这是什么意思。
C的情况都没有。可能你正在读一些其他语言。在任何情况下,动态语义检查仍然在运行时执行,而不是由任何编译器阶段执行。
答案 1 :(得分:1)
至于我的理解,只能在运行时发现动态语义错误。 C没有任何机制,因为C根本不允许任何动态语义:)它不是解释或JIT编译语言。
如果您提供C中动态语义错误的真实示例,它将阐明您的实际含义