2

我使用 pycparser 来解析 c 代码,并且对于我的测试文件它工作正常。我对 cpp 和头文件有一些问题,所以我使用外部 cpp 并将预处理器的输出提供给 pycparser。使用我的测试文件,一切正常,但使用来自真实软件项目的文件,我得到一个错误。

ast = parse_file("layer2.c.o", use_cpp=False)

错误信息:

  File "/usr/local/lib/python2.7/dist-packages/pycparser/c_parser.py", line 1613, in p_error
column=self.clex.find_tok_column(p)))
  File "/usr/local/lib/python2.7/dist-packages/pycparser/plyparser.py", line 54, in _parse_error
    raise ParseError("%s: %s" % (coord, msg)) raise ParseError("%s: %s" % (coord, msg))

pycparser.plyparser.ParseError: /usr/include/stdint.h:58:1: before: __extension__

有人知道这个问题吗?

4

1 回答 1

2

参阅有关__extension__. 一般来说,我看到您正在尝试解析包含的标准标题。如果您改用 pycparser 附带的“假”C 头文件,您的生活会轻松很多。详情在这里

于 2013-11-16T23:02:21.663 回答