gpt4 book ai didi

C++ 解释器 : How to emit error messages?

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:58 25 4
gpt4 key购买 nike

我想像现在所有解释器一样发出动态错误消息,例如:

Name error: Undefined variable

将是不变的,但是我想要达到的是:

Name error: Undefined variable 'X', in line 1

好的。行号真的没问题:每条错误消息都必须有一个行号,所以我将它添加到错误发射器函数中:

Error( ErrType type, string msg, int line );

那么我的问题在哪里呢?

如何将 'X' 放入 Undefined variable * 中?

  • 我不能使用 sprintf,因为它不支持字符串,但我到处都在使用它们
  • 我不能简单地使用 cout 并连接所有内容,因为我希望错误消息是可抑制的
  • 我想像上面那样将所有内容都放入一个函数中,Error()

如何将动态错误消息放在一起?

例如:Error( Name, sprintf("Undefined variable %s", myVariableName ), lineNum);

(但是 myVariableName 是一个字符串,sprintf 会把事情搞砸)

最佳答案

您可以通过调用 c_strmyVariableName 中获取以 null 结尾的 C 字符串:

myVariableName.c_str()

请注意,您对 sprintf 的使用不正确; sprintf 的第一个参数接受用于放置格式化字符串的缓冲区。如果您在程序中使用 std::string,为什么还要使用 sprintf?如果 Error 采用 std::string,那么您可以只使用字符串连接:

Error(Name, "Undefined variable " + myVariableName, lineNum);

关于C++ 解释器 : How to emit error messages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2662554/

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