我目前正在使用 Python 通过 LibClang
解析 C 文件。我在读取大小由定义指令变量定义的 C 数组时遇到问题。
使用 node.get_children 我可以完美读取以下数组:
int myarray[20][30][10];
一旦将数组大小替换为变量,就无法正确读取数组。以下数组代码无法读取。
#define MAX 60;
int myarray[MAX][30][10];
实际上解析器在 MAX 处停止并且在转储中有错误:无效的 sloc。
我该如何解决这个问题?
谢谢
最佳答案
在尝试解析之前通过 C 预处理器运行代码。这将导致所有预处理器符号被它们的值替换,即您的 [MAX]
将变为 [60]
。
请注意,C 代码也可以这样做:
const int three[] = { 1, 2, 3 };
即让编译器根据给定的初始化值的数量推导出数组的长度。
或者,从 C99 开始,甚至这样:
const int hundred[] = { [99] = 4711 };
所以天真的方法可能仍然会失败,但我当然对您使用的解析器的功能一无所知。
关于python - 使用 Python 和 LibClang 解析 C 数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30049387/