问题描述
tl;博士
- 哦,很明显它失败了,第 5 行有语法错误
- 嗯,看,我认为在第 10 行和第 13 行之间有一个语义错误
- 不,您不能调用变量
a±b
,这是一个词法错误 - 在第 50 行有一个 X 错误,对于语义和句法之外的任何X类型的错误。
原始问题
我添加 C++ 是因为我使用了这种语言的示例,以及 language-lawyer 标记,以防答案与语言相关,即使我的问题更笼统。
如果我用 C++ 编写这段代码,
x x x;
它不会像这样编译错误
$ g++ -std=c++17 uffa.cpp && ./a.out
uffa.cpp: In function ‘int main()’:
uffa.cpp:4:6: error: expected ‘;’ before ‘x’
4 | x x x;
| ^~
| ;
我的理解是 x x x;
只是语法错误; 格式错误是一个更好的术语吗?还是语法错误?
另一方面,编码这个
s.append("!");
可以是有效的,例如如果它前面有 std::string s{"Ciao"};
,或者无效,例如如果前面有int s{3};
,在后一种情况下错误是这样的
$ g++ -std=c++17 uffa.cpp && ./a.out
uffa.cpp: In function ‘int main()’:
uffa.cpp:5:7: error: request for member ‘append’ in ‘s’,which is of non-class type ‘int’
5 | s.append("!");
| ^~~~~~
尽管错误具有相同的“形状”,但我的理解是后一个错误与代码在与第一个示例不同的“级别”上无效有关。它是语义上无效/不正确/格式错误吗?
这种错误“分类”与 SFINAE 和 if constexpr
有何关联?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)