第一个程序 » 常见问题
值得注意的是,什么会导致编译错误。编译错误是由无效的 C++ 代码引起的。当编译器遇到无效代码时,它将停止并告诉您哪里出错了。除非编译无错误完成,否则您无法运行程序。
忘记 std::
前缀
如果您在没有适当的 using
语句的情况下省略 std::
,就会导致错误。
🔴 错误消息
- GCC
- MSVC
👌 解决方案
在 main
函数顶部添加 using std::cout;
#include <iostream>
int main() {
using std::cout;
cout << "Hello, World!";
}
忘记包含头文件
即使是专家也很容易忘记 #include
。
🔴 错误消息
- GCC
- MSVC
缺少分号 ;
初学者经常忘记语句末尾的分号 (;
)。仔细研究本课程中提供的代码示例,注意它们应该放在哪里。
🔴 错误消息
- GCC
- MSVC
编译器必须猜测您在哪里漏掉了分号。因此,如果您确定您没有在它告诉您的那一行漏掉分号,请尝试向上看几行。
此外,缺少分号还会导致代码中出现不相关的错误。通常,编译器给出的第一个错误消息是最有帮助的。
未终止的文本
文本始终位于引号字符 "TEXT IS HERE!"
之间。忘记添加第二个引号会导致编译器认为程序的其余部分是文本,从而导致大量错误。
🔴 错误消息
- GCC
- MSVC
在文本中使用 "
您可能想在向控制台输出消息时在消息中添加引号。但是,请记住 C++ 将 "..."
引号内的所有内容都视为文本。
因此,如果您编写
"Hi! My name is "Slim Shady". Nice to meet you!"
C++ 将将其解释为
"TEXT" C++ CODE "TEXT"
🔴 错误消息
- GCC
- MSVC
error: unable to find string literal operator ‘operator""Slim’ with ‘const char [16]’, ‘long unsigned int’ arguments
🖼 错误说明:
待办
error C3688: invalid literal suffix 'Slim'; literal operator or literal operator template 'operator ""Slim' not found
error C2146: syntax error: missing ';' before identifier 'Shady'
error C2065: 'Shady': undeclared identifier
error C2143: syntax error: missing ';' before 'string'
🖼 错误说明:

这些错误消息没有那么有用!您的提示应该是它将您打算作为文本的内容视为代码。
👌 解决方案
您可以通过使用反斜杠字符 \
来转义引号,从而防止这种情况发生。
"Hi! My name is \"Slim Shady\". Nice to meet you!"
\"
是一个转义序列的例子。它告诉编译器将下一个字符视为文本。
我们还可以使用反斜杠来转义其他字符,例如反斜杠本身。因此,我们将在输出中需要使用两个反斜杠才能得到一个。
std::cout << "C:\\Users\\SlimShady\\Desktop";
C:\Users\SlimShady\Desktop