我目前正在使用Python来使用IsValid
解析C文件。我在读取一个大小由define-directive-variable定义的C数组时遇到了问题。
使用node.get_children,我可以完美地读取以下数组:
ServerValidateEventArgs
只要用变量替换数组大小,就无法正确读取数组。无法读取以下数组代码。
false
实际上解析器在MAX停止并且在转储中存在错误:无效的sloc。
我该如何解决这个问题?
由于
答案 0 :(得分:1)
在尝试解析之前,通过C预处理器运行代码。这将导致所有预处理器符号被其值替换,即您的[MAX]
将变为[60]
。
请注意,C代码也可以这样做:
const int three[] = { 1, 2, 3 };
即。让编译器从给定的初始化值的数量中推断出数组的长度。
或者,从C99开始,即便如此:
const int hundred[] = { [99] = 4711 };
所以一个天真的方法可能仍然会破坏,但我当然不了解你正在使用的解析器的功能。
答案 1 :(得分:0)