“Hello, world"程序是指在计算机屏幕上输出“Hello, world”这行字符串的计算机程序,“hello, world”的中文意思是“你好,世界。”。因为《The C Programming Language》中使用它做为第一个演示程序,非常著名,所以后来的程序员在学习编程或进行设备调试时延续了这一习惯。

Hello World 源程序

源程序也称源代码,是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。

在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。

因为 C++ 算是 C 的超集,所以,我们先温故下 C 的 Hello World 的源程序:

#include <stdio.h>

int main() {
	printf("Hello World!");
	return 0;
}

使用 C++ 语言提供的 std 命名空间下的 cout 函数输出 字符串

#include <iostream>
using namespace std;

int main() {
	cout << "Hello World!";
	return 0;
}

使用 g++ 编译该源程序

g++ HelloWorld.cpp

编译结束后,得到一个可执行的文件 a.exe,在 DOS 终端执行该程序即可打印 Hello World 字符。同时,生成的可执行的程序名称可以被指定文件名,这需要使用到 g++ 的 -o 参数,例如:

g++ HelloWorld.cpp -o HelloWorld

编译结束后,会得到一个 HelloWorld.exe 的程序。

undefined reference to ‘std::cout’

当使用 gcc 编译该 C++ 程序的时候,会出现 std 命名空间中没有定义 cout 函数,原因是 gcc 默认会把 .c 的程序处理成 C 程序,然而 g++ 默认会将 .c 或者 .cpp 的程序处理成 C++ 程序,故而,使用 gcc 编译 .cpp 的时候将命令更换为如下所示:

gcc HelloWorld.cpp -o HelloWorld -lstdc++

中文支持

修改源程序中的字符串 Hello World! 为中文 你好,世界! 后, 程序执行的时候,发现打印的字符是乱码,这是因为 g++ 编译器在编译的时候,默认支持的字符集是不支持中文的,故而,我们需要在编码的时候,为其指定源程序支持的字符集,因为当前环境是 windows 环境,建议使用的字符集是 GBK,编译指令修改如下:

g++ HelloWorld.cpp -fexec-charset=GBK -o HelloWorld

同时,还需要将当前源程序的文件编码修改为中文字符集,推荐的做法是使用 notepad++ 编码功能,如图所示:

使用 notepad++ 修改文件的编码方式

完成这两步操作后,再次编译后重新执行目标程序后,发现能够正常地打印中文字符了。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐