» C++快速入门 » 2. 高级篇 » 2.6 构建二进制文件

构建可执行文件

输入和输出

在 C++ 中,你可以使用标准输入/输出流进行输入和输出:std::cin 用于输入,std::cout(或 std::cerr 用于错误)用于输出。这些流都在 <iostream> 头文件里。

#include <iostream>

int main() {
    int userInput;

    // 提示用户输入
    std::cout << "Enter an integer: ";

    // 从标准输入(键盘)读取用户输入
    std::cin >> userInput;

    std::cout << "You entered: " << userInput << std::endl;

    return 0;
}

字符串输入

#include <iostream>
#include <string>

int main() {
    // 声明一个字符串变量来存储用户输入
    std::string userInput;

    // 提示用户输入
    std::cout << "Enter a string: ";

    // 将用户输入读取为字符串
    std::getline(std::cin, userInput);

    // 显示输入的字符串
    std::cout << "You entered: " << userInput << std::endl;

    return 0;
}

程序参数

在 C++ 中,可以使用 main 函数中的 argcargv 参数获取命令行参数。 argc 是命令行参数的数量,argv 是一个包含所有参数的字符串数组。

#include <iostream>

int main(int argc, char *argv[]) {
    // 检查是否至少有两个参数(包括程序名称)
    if (argc < 2) {
        std::cerr << "Usage: " << argv[0] << " <name>" << std::endl;
        return 1; // Return an error code
    }

    // 第一个参数(argv[0])是程序名称
    // 第二个参数(argv[1])是第一个命令行参数
    std::cout << "Hello, " << argv[1] << "!" << std::endl;

    return 0;
}

编译

广义上的编译是将人类可读的 C 源代码转换为机器可执行代码的过程。 它包括4个步骤:预处理编译汇编链接

预处理

预处理器扫描源代码并处理以 # 开头的指令,例如 #include#define。 它做的事情有包含头文件展开宏执行条件编译等。

编译

预处理后的代码被输入到编译器中,编译器将其转换为汇编代码或中间表示结果。 编译器检查代码的语法和语义,并生成包含机器代码的目标文件。

汇编

汇编器将汇编代码转换为计算机处理器能够理解的机器代码或二进制代码。 这一步生成具有 “.o” 扩展名的目标文件。

# 将 main.cpp 编译为对象
g++ -c -std=c++11 src/main.cpp -o main.o

# 将 calculator.cpp 编译为对象
g++ -c calculator.cpp -o target/calc.o

g++ 是 GNU C++ 编译器,是 GNU 编译器集合(GCC)的一部分。

GCC

了解有关 GCC 的更多信息:https://gcc.gnu.org/

链接

链接器获取在编译过程中生成的目标文件,并将它们与所需的库结合起来,以创建最终的可执行文件。 链接阶段负责解析函数和变量的引用,分配内存地址,并生成可执行文件。

# 链接对象并创建可执行文件
g++ main.o target/calc.o -o bin/myprog

持续前进。持续学习。