跳到主要内容

第一个程序 » 常见问题

值得注意的是,什么会导致编译错误。编译错误是由无效的 C++ 代码引起的。当编译器遇到无效代码时,它将停止并告诉您哪里出错了。除非编译无错误完成,否则您无法运行程序。

忘记 std:: 前缀

如果您在没有适当的 using 语句的情况下省略 std::,就会导致错误。

🔴 错误消息

error: ‘cout’ was not declared in this scope; did you mean ‘std::cout’?

🖼 错误说明:

Illustration of the error - omitting std

👌 解决方案

main 函数顶部添加 using std::cout;

#include <iostream>
int main() {
using std::cout;
cout << "Hello, World!";
}

忘记包含头文件

即使是专家也很容易忘记 #include

🔴 错误消息

error: ‘cout’ is not a member of ‘std’

🖼 错误说明:

Illustration of the error - missing include

缺少分号 ;

初学者经常忘记语句末尾的分号 (;)。仔细研究本课程中提供的代码示例,注意它们应该放在哪里。

🔴 错误消息

error: expected `;` before (...)

🖼 错误说明:

Illustration of the error - missing semicolon
不可靠的错误消息

编译器必须猜测您在哪里漏掉了分号。因此,如果您确定您没有在它告诉您的那一行漏掉分号,请尝试向上看几行。

此外,缺少分号还会导致代码中出现不相关的错误。通常,编译器给出的第一个错误消息是最有帮助的。

未终止的文本

文本始终位于引号字符 "TEXT IS HERE!" 之间。忘记添加第二个引号会导致编译器认为程序的其余部分是文本,从而导致大量错误。

🔴 错误消息

error: missing terminating " character

🖼 错误说明:

Illustration of the error - missing quote

在文本中使用 "

您可能想在向控制台输出消息时在消息中添加引号。但是,请记住 C++ 将 "..." 引号内的所有内容都视为文本。

因此,如果您编写

"Hi! My name is "Slim Shady". Nice to meet you!"

C++ 将将其解释为

"TEXT" C++ CODE "TEXT"

🔴 错误消息

error: unable to find string literal operator ‘operator""Slim’ with ‘const char [16]’, ‘long unsigned int’ arguments

🖼 错误说明:

待办

无用的错误

这些错误消息没有那么有用!您的提示应该是它将您打算作为文本的内容视为代码。

👌 解决方案

您可以通过使用反斜杠字符 \转义引号,从而防止这种情况发生。

"Hi! My name is \"Slim Shady\". Nice to meet you!"
转义序列

\" 是一个转义序列的例子。它告诉编译器将下一个字符视为文本。

我们还可以使用反斜杠来转义其他字符,例如反斜杠本身。因此,我们将在输出中需要使用两个反斜杠才能得到一个。

代码
std::cout << "C:\\Users\\SlimShady\\Desktop";
控制台
C:\Users\SlimShady\Desktop

第一个程序 » 常见问题

值得注意的是,什么会导致编译错误。编译错误是由无效的 C++ 代码引起的。当编译器遇到无效代码时,它将停止并告诉您哪里出错了。除非编译无错误完成,否则您无法运行程序。

忘记 std:: 前缀

如果您在没有适当的 using 语句的情况下省略 std::,就会导致错误。

🔴 错误消息

error: ‘cout’ was not declared in this scope; did you mean ‘std::cout’?

🖼 错误说明:

Illustration of the error - omitting std

👌 解决方案

main 函数顶部添加 using std::cout;

#include <iostream>
int main() {
using std::cout;
cout << "Hello, World!";
}

忘记包含头文件

即使是专家也很容易忘记 #include

🔴 错误消息

error: ‘cout’ is not a member of ‘std’

🖼 错误说明:

Illustration of the error - missing include

缺少分号 ;

初学者经常忘记语句末尾的分号 (;)。仔细研究本课程中提供的代码示例,注意它们应该放在哪里。

🔴 错误消息

error: expected `;` before (...)

🖼 错误说明:

Illustration of the error - missing semicolon
不可靠的错误消息

编译器必须猜测您在哪里漏掉了分号。因此,如果您确定您没有在它告诉您的那一行漏掉分号,请尝试向上看几行。

此外,缺少分号还会导致代码中出现不相关的错误。通常,编译器给出的第一个错误消息是最有帮助的。

未终止的文本

文本始终位于引号字符 "TEXT IS HERE!" 之间。忘记添加第二个引号会导致编译器认为程序的其余部分是文本,从而导致大量错误。

🔴 错误消息

error: missing terminating " character

🖼 错误说明:

Illustration of the error - missing quote

在文本中使用 "

您可能想在向控制台输出消息时在消息中添加引号。但是,请记住 C++ 将 "..." 引号内的所有内容都视为文本。

因此,如果您编写

"Hi! My name is "Slim Shady". Nice to meet you!"

C++ 将将其解释为

"TEXT" C++ CODE "TEXT"

🔴 错误消息

error: unable to find string literal operator ‘operator""Slim’ with ‘const char [16]’, ‘long unsigned int’ arguments

🖼 错误说明:

待办

无用的错误

这些错误消息没有那么有用!您的提示应该是它将您打算作为文本的内容视为代码。

👌 解决方案

您可以通过使用反斜杠字符 \转义引号,从而防止这种情况发生。

"Hi! My name is \"Slim Shady\". Nice to meet you!"
转义序列

\" 是一个转义序列的例子。它告诉编译器将下一个字符视为文本。

我们还可以使用反斜杠来转义其他字符,例如反斜杠本身。因此,我们将在输出中需要使用两个反斜杠才能得到一个。

代码
std::cout << "C:\\Users\\SlimShady\\Desktop";
控制台
C:\Users\SlimShady\Desktop