C++ 项目结构

1. C++ 项目结构

C++ 项目包含几千个文件,当构建项目时,需要选择编译哪些文件,选择哪种工具编译这些文件组织称可执行文件

1.1 编译

计算机处理器只能执行底层二进制指令,编译器需要将C++源码转换成处理器能执行的指令集。

  • 编译器配置的内存称为栈帧(Stack frame),配置内存传递数据
    • 函数接收参数并返回一个值
    • 函数声明只在函数内部使用的变量,并且将只有在函数被调用时才存在
  • 代码错误,向用户提示错误信息

1.2 链接代码

编译器将一个或多个C++源码文件编译成对象文件, 然后通过连接器将对象文件链接到一个可执行程序中

1. 3 源代码

.cpp 结尾的文本文件称为源代码文件

#include <iostream>

// 程序入口
int main() {
    // << 运算符号将 字符串 "Helle World!\n" 添加到流对象 std::cout 中
    // cout对象是在std名称空间下声明的
    // cout对象是iostream类的一个实例,并在main函数调用前已经创建
    // << 表示名为 << 的函数被调用,该函数会将字符串中的每个字符打印到控制台上,直到遇到第一个NULL字符
    std::cout << "Hello World!\n";
}
  • 注释:以 //开头的行,编译器会自动忽略到行尾的所有文本,多行注释以 /* */包裹
  • 大括号: {} 代码快
  • 函数:声明了返回值类型,具有一对圆括号的函数名,圆括号中声明了传递给函数的参数
  • 约定main函数是程序的入口,是项目代码中首先被调用的函数。若main函数没有返回值,默认返回 0
  • 语句以分号结尾
  • 字符串使用双引号括起来
  • std是命名空间,表示类似目录代码的集合
  • 双冒号::是域解析运算符
  • 运算符重载:对运算符默认行为进行重新定义
  • # 向编译器声明某种类型信息
    • #include 将文件中的内容拷贝到该源代码文件中,这种特定文件称为头文件,适用于通过库复用代码
    • #define
    • #pragma
  • ostream 是标准库的一部分,在C++编译器附带的include目录下找到,使用 <>表明编译器应该用存储在头文件的标准目录中找相关内容,使用双引号 "" 自定义头文件的绝对或者相对路径,头文件的命名以.h结尾

1.4 解析命令行参数

通过命令行向可执行文件传递参数

#include <iostream>

// 命令行参数以空格隔开,参数第一个为命令程序本身,所有接收到的参数都是字符串类型,若是想要获取一个字符串参数,则需要对字符串进行类型转换
int main(int argc, char *argv[]) {
    // 终端输出传入命令行的参数个数
    std::cout << "number of arguments is: " << argc << std::endl;

    // 通过for循环打印出每个参数的值
    for (int i = 0; i < argc; i++) {
        std::cout << argv[i] << std::endl;
    }
}
# 编译
c++ src/main.cpp -o main

# 运行
./main 1 2 3 4 5

# 输出:
number of arguments is: 6
./main
1
2
3
4
5
  • 接收命令行传递过来的参数,main函数包含两个参数
    • 第一个参数 argc,是整数,指定传递过来的参数数量
    • 第二个参数 argv,是一个指向内存中C字符串的指针数组
  • []表示一个数组,并且数组中每个元素的类型是 char **表示数组的每个元素都是指向内存的指针,char * 表示指向内存中以NUL字符结尾0个或多个字符,字符串的长度由到NUL字符串的字符总数得出
  • std::endl : 代替换行符添加新的一行,然后对输入流的内容刷新
  • 数组索引从0开始,通过 [i]方式访问,数组的长度为元素数量n,数组最后一个元素的索引为 n-1
posted @   梦_鱼  阅读(248)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示