![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 62
TBAALi
这个作者很懒,什么都没留下…
展开
-
clang 命令行生成 Token、Ast 与 IR
clang_notes查看编译过程 clang -ccc-print-phases main.m词法分析生成 Token clang -fmodules -E -Xclang -dump-tokens main.m语法分析生成语法树 AST clang -fmodules -fsyntax-only -Xclang -ast-dump main.m生成中间代码 .ll clang -S -emit-llvm main.m .bc clang -c -emit-llvm main.mIR 基本语原创 2021-12-19 08:46:05 · 1864 阅读 · 0 评论 -
COM组件简介
COM组件简介面向对象的思想难以适应这种分布式软件模型,于是组件化程序设计思想得到了迅速的发展。按照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行在同一台机器上,也可以运行在不同的机器上。为了实现这样的应用软件,组建程序和组建程序之间需要一些极为细致的规范, 只有组件程序遵守了这些共同的规范,然间系统才能正常运行。为此,OMG和Microsoft分别提出了CORBA(Common Object Request Breaker Architecture原创 2021-01-26 16:46:38 · 1168 阅读 · 0 评论 -
C语言编译过程总结
概述C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下:从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。编译过程编译过程又可以分成两个阶段:编译和汇编。编译编译是读取源程序(字符流),对之进行词法和语法的分析,原创 2021-01-26 16:45:33 · 200 阅读 · 0 评论 -
Linux系统下C语言编程--使用gcc/Makefile编译执行C程序
基础知识源程序编译使用 gcc 编译程序int main(int argc, char** argv){ printf("Hello Linux\n");}要编译这个程序,执行以下命令gcc -o hello hello.cgcc 编译器会为我们生成一个可执行文件 hello。gcc 参数选项-o 表示我们要求编译器为我们输出可执行文件。-c 表示我们只要求编译起输出目标代码,而不必输出可执行文件。-g 表示我们要求编译器在编译的时候提供对程序的调试信息。MakeFile原创 2021-01-24 22:26:32 · 981 阅读 · 1 评论 -
设计模式总结 -- C++代码示例
设计模式QQ:1841545843邮箱:jiaxx903@foxmail.com一.什么是设计模式设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、...原创 2020-04-25 17:06:46 · 313 阅读 · 0 评论 -
《C和指针》笔记(十)-- 高级指针
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com收集各种各样涉及指针的技巧指向指针的指针原创 2019-05-19 15:47:59 · 135 阅读 · 0 评论 -
《C和指针》笔记(十一)-- 预处理器
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com编译一个c程序涉及很多步骤,第一个阶段为预处理阶段。在源代码编译之前做一些文本性的操作。删除注释插入被#include包含的内容或文件定义和替换#define指令定义的符号以及确定代码的部分内容是否应更具一些条件编译进行编译预定义符号* __FILE__ "name.c" ...原创 2019-05-20 08:28:22 · 163 阅读 · 0 评论 -
《C和指针》笔记(十二)-- 结构和联合
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com原创 2019-06-03 18:48:22 · 143 阅读 · 0 评论 -
《C和指针》笔记(十三)-- I/O
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com错误报告void perror ( char const *message );优点是容易使用。标准库函数在一个外部整型变量 errno (errno.h)中保存错误代码之后把这个信息传递给用户程序,提示操作失败的准确原因。终止执行exit 用于终止一个程序的执行void exit (...原创 2019-06-04 18:56:06 · 127 阅读 · 0 评论 -
Compiler
Compilercompiler.h#pragma once/*** @ Name: Simplified C Compiler** @ Auther: TBAALi** @ Time: 2019-07-24** ** @ Introduction:** SC 语言(源程序) -> SCC编译器 -> Intelx86机器语言(目标语言)** ...原创 2019-07-24 21:23:49 · 574 阅读 · 5 评论 -
《C和指针》笔记(十四)-- 经典抽象数据类型
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com一. 堆栈/*** 堆栈模拟接口*/#define STACK_TYPE int// pushvoid push(STACK_TYPE value);// popvoid pop(void);// topSTACK_TYPE top(void);// is_emptyin...原创 2019-07-21 17:18:01 · 151 阅读 · 0 评论 -
《C和指针》笔记(九)-- 使用结构和指针
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com通过组合使用结构和指针创建强大的数据结构单链表有一个根节点 root pointer节点的声明typedef struct NODE{ struct NODE* link; int value;} Node;单链表// 单链表typedef struct NODE{ st...原创 2019-05-19 15:28:47 · 134 阅读 · 0 评论 -
《C和指针》笔记(八)-- 动态内存分配
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.commalloc 和 free : malloc从内存池中提取一块合适的内存,并向该程序返回一个指向这块内存的指针。malloc分配的是一块连续的内存,对每个malloc返回的指针都进行检查,确保不是空的,malloc返回一个void*指针。calloc 在返回指向内存的指针之前把它初始化伟0reall...原创 2019-05-19 12:16:45 · 270 阅读 · 0 评论 -
《C和指针》笔记(二)-- 作用域,extern, static
C/C++笔记编译器可以确认四钟不同类型的作用域——文件作用域, 函数作用域, 代码块作用域和原型作用域。链接属性决定如何处理不同文件中出现的标识符,标识符的作用域与它的链接属性有关。external – 外部 : 标识符不论声明多少次,位于几个源文件都表示同一个实体。internal – 内部 : 标识符在同一个文件中的所有声明中都指向同一个实体。none – 无 : 多个声明符...原创 2019-03-20 19:16:59 · 153 阅读 · 0 评论 -
《C和指针》笔记(三)-- 存储类型
C/C++ 笔记变量存储的地方: 普通内存,运行时堆栈,硬件寄存器。凡是在任何代码块之外声明的变量总是存储在静态内存中。,,也就是不属于堆栈的内存,这类变量称之为静态变量。静态变量在程序运行之前创建,在程序的整个执行期间始终存在。在代码块之中声明的变量存储类型是自动的,也就是说它存储在堆栈中,称为自动变量。auto用于修饰次类型。代码块内部声明变量,加上 static 可以转变为静态存...原创 2019-03-20 19:33:37 · 133 阅读 · 0 评论 -
C++函数指针
C++函数指针TBAALi QQ 3107142922原创 2019-03-12 16:43:24 · 276 阅读 · 2 评论 -
《C和指针》笔记(五)-- 函数,递归
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com当程序调用一个无法见到原型的函数时,编译器变认为该函数返回一个整形值。所有函数都应该具有类型,尤其是那些返回不是整数的函数。C函数的所有参数均以“传值调用”方式进行传递,这意味着函数将获得参数值得一份拷贝。参数为指针的话传的就是指针的一份拷贝。C语言可以用于设计和实现抽象数据类型(ADT)应为可以...原创 2019-03-24 18:21:42 · 154 阅读 · 1 评论 -
《C和指针》笔记(六)-- 可变参数列表
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com可变参数列表是通过宏来实现的,这些宏定义与 stdarg.h 头文件中,是标准库的一部分。这个头文件声明了一个类型 va_list 和三个宏:va_start, va_arg , va_end. 我们可以声明一个类型为 va_list 的变量。与这几个值配合使用,访问参数的值。省略号:表示此处可能传递数...原创 2019-03-24 18:47:52 · 142 阅读 · 0 评论 -
《C和指针》笔记(七)-- 数组
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com数组名的值是一个指针常量,数组第一个元素的地址,如果数组为 int 就是“指向int的指针常量”,如果为“其他类型”,则为“指向其他类型的常量指针”。指针常量所指向的是内存中数组的起始位置,如果修改这个指针常量,唯一可行的办法是将整个数组移动到内存中的其他位置。特例:int a[10];si...原创 2019-03-25 19:20:47 · 139 阅读 · 0 评论 -
C++顺序容器
C++顺序容器QQ : 1841545843邮箱 : jiaxx903@163.com标准库中的顺序容器vector 可变大小数组deque 双端队列list 双向链表forward_list 单向链表array 固定大小数组, 不能添加或删除元素string 保存字符串容器string 和 vector 将元素保...原创 2019-03-27 08:21:48 · 156 阅读 · 0 评论 -
《C和指针》笔记(四)--指针详解
C/C++ 笔记QQ : 1841545843邮箱 : jiaxx903@163.com在现代的大部分计算机上,每个字节占8个位。字由2个或4个字节组成。高级语言提供通过名字来访问内存地址,名字与内存位置之间的关联并不是硬件提供的,由编译器实现的,硬件任然通过地址访问内存。通过一个指针访问所指向的地址的内容称之为解引用或间接访问。将int* 看做同等级别的 和 int 不同的数据类型...原创 2019-03-24 15:44:40 · 173 阅读 · 0 评论 -
C++ 泛型算法
C++ 泛型算法QQ : 1841545843邮箱 : jiaxx903@163.com大多数算法定义在 algorithm 中, numeric 中定义了一组数值泛型算法。find 前两个参数是迭代器的范围,第三个参数是值。算法永远不会执行容器的操作,他们只会运行于迭代器之上,算法永远不会改变底层容器的大小。只读算法findcountaccumulate (在头文件 n...原创 2019-04-08 19:14:32 · 190 阅读 · 0 评论 -
C++ 动态内存与智能指针
C++动态内存QQ : 1841545843邮箱 : jiaxx903@163.com静态内存用来保存局部 static 对象、类的 static 数据成员,以及定义在任何函数之外的变量。栈内存用来保存定义在函数之内的 static 对象。除了栈内存和静态内存外,每个程序还拥有一个内存池,这部分称之为 堆 ,堆用来进行存储动态分配。即在运行时分配的内存new 在动态内存中位对象分配内存...原创 2019-04-12 19:11:40 · 143 阅读 · 0 评论 -
《C和指针》笔记(一)--typedef, #define, const
C/C++笔记1841545843 删除线格式typedef 允许为各种数据类型定义新名字,使用后边的代替前边的。#define 使用前边的代替后边的。typedef char* ptr_to_char; // ptr_to_char 代替 char*ptr_to_char psz; // psz 为 char* 类型使用type...原创 2019-03-20 18:53:22 · 104 阅读 · 0 评论