gpt4 book ai didi

c++ - Clang 行指令

转载 作者:太空狗 更新时间:2023-10-29 23:01:23 27 4
gpt4 key购买 nike

我正在编写一个输出 C++ 代码的语法翻译器,遇到了一个有趣的问题。假设我有两个文件:ln.xln.cpp。在 ln.x 中:

abc

ln.cpp中:

#line 1 "ln.x"
(

当我尝试使用 GCC 编译它时,它会在 ln.x 中打印相应的行:

ln.x:1:1: error: expected unqualified-id at end of input
abc
^
ln.x:1:1: error: expected ‘)’ at end of inpu

但是,Clang 只是打印同一文件的行:

ln.x:1:2: error: expected unqualified-id
(
^
ln.x:1:2: error: expected ')'
ln.x:1:1: note: to match this '('
(
^
2 errors generated.

有没有办法让 Clang 像 GCC 一样打印文件的行?

最佳答案

这看起来更像是一个错误而不是一个功能。你为什么要它?

#line 指定的文件打印仅在该行与要解析的文本匹配时才有效,字符对字符。如果文件首先存在。

我在 GCC 预处理器手册(GCC 4.9 版)中没有看到任何相关内容。但是,请注意,曾几何时(直到 2001 年),GCC 会假定命名文件确实存在于本地,或者至少它的父目录存在。这可能是一个保留错误。

而且,不,没有办法让 Clang 这样做。它没有尝试打开由 #line 命名的文件的概念。

关于c++ - Clang 行指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31352011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com