C++
chengqiuming
这个作者很懒,什么都没留下…
展开
-
gcc对C语言的编译过程
一点睛gcc对C/C++的编译过程分为4个阶段:预处理、编译、汇编和链接。二 预处理1源代码test.c#include <stdio.h>int main(int argc,char *argv[]){ printf("hello, boy \n" ); return 0;}2预处理[root@localhost tes...原创 2019-03-10 08:49:44 · 428 阅读 · 0 评论 -
gcc链接介绍
一点睛在成功汇编之后,就进入了链接阶段。链接主要是为了解决多个文件之间符号引用的问题。编译时编译器只对单个文件进行处理,如果该文件里面需要引用到其他文件中符号(例如全局变量或者某个函数库中的函数),那么这时在这个文件中该符号的地址是没法确定的,只能等链接器把所有的目标文件连接到一起才能确定最终的地址,最终生成可执行文件。当所有目标文件都生成之后,gcc就在内部调用链接器ld完成链接工作。...原创 2019-03-10 09:17:25 · 2304 阅读 · 0 评论 -
gcc编译语法介绍
一点睛gcc编译器的基本语法格式gcc [选项]准备编译的文件 [选项] [目标文件]准备编译的文件:除了C或CPP源文件外,也可能是汇编源码文件(.s文件)。目标文件:如果没有指明,就自动生成a.out。常用使用方式:gcc test.c -o test简洁方式:gcctest二使用gcc编译一个C程序1源代码#include <...原创 2019-03-10 09:51:13 · 2985 阅读 · 0 评论 -
gcc编译选项-x介绍
一点睛1语法格式-xlanguagefilename2说明languagefilename都是选项x的参数,告诉gcc源代码(filename)所使用的语言为language,使用后缀名无效。这样设定后,对以后的源文件都这样处理,一致等到再次调用-x来关闭。默认情况下,gcc是根据源文件名后缀名来判断源文件语言的,比如根据.c来知道是C语言的代码,根据.cpp后缀名知...原创 2019-03-10 10:28:38 · 4594 阅读 · 0 评论 -
gcc编译选项-o和-c介绍
一选项-o1点睛选项-o用于指定要生成的结果文件,后面跟的就是结果文件名字。o是output的意思,不是目标的意思。结果文件可能是预处理文件、汇编文件、目标文件或者最终可执行文件。2 示例gcc -S test.i -o test.s# -S 说明只进行到编译阶段# 生成汇编文件test.s3 示例gcc -c test.cpp -o test# 这个...原创 2019-03-10 11:19:50 · 39545 阅读 · 1 评论 -
gcc编译选项-I与搜寻路径(上)
一点睛选项-I用来指定头文件所在文件夹的路径,用法未-IdirPath。如果源代码中用尖括号包含头文件,gcc就会在-I指定的路径中搜索所需的头文件,若找不到,则到标准默认路径/usr/local/include下搜索,若找不到,在到标准默认路径/usr/include下搜索,若再找不到,则报错(而不会再到当前工作目录搜索,即使当前工作目录有所需头文件)。如果源代码中用双引号包含头...原创 2019-03-10 18:33:54 · 5488 阅读 · 0 评论 -
gcc编译选项-I与搜寻路径(下)
一点睛本实战验证双引号包含头文件时的搜索次序。二实战1建立4个test1.h文件[root@localhost test]# find / -name test1.h/root/C++/ch02/2.11/test/test1.h/root/C++/ch02/2.11/inc/test1.h/usr/include/test1.h/usr/local/include...原创 2019-03-10 18:53:15 · 801 阅读 · 0 评论 -
gdb调试器的使用
一重要准备要使用gdb来调试程序,最重要的准备是在编译C/C++程序的时候,把调试信息加到可执行文件中。加上-g选项可以做到这一点。比如:gcc -g test.c -o test如果没有-g,将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。所以,如果要用gdb调试程序,就要在编译的时候使用-g。二 启动gdb1一般启动和退出方法[root@localh...原创 2019-03-14 21:51:51 · 378 阅读 · 0 评论 -
gcc编译选项-include和-Wall
一选项-include1点睛gcc命令行中也能包含头文件。很多开源软件都是这样,有的时候开源软件源码中找不到“#include <xxx.h>”这样的代码,而xxx.h的内容又确实被引用了。这就是-include搞的鬼。在gcc编译时通过-include来保护xxx.h。2使用方式gcc [srcfile] -include [headfile]3实战...原创 2019-03-10 19:33:22 · 2897 阅读 · 0 评论 -
gcc编译选项的-g -pg和-l
一-g选项1点睛选项-g可以产生供gdb调试用的的可执行文件,即可执行文件中包含供gdb调试器进行调试所需要的信息,因此,加了这个选项后,产生可执行文件尺寸要大些。2实战2.1源代码#include <stdio.h>int main(){ bool b = false; printf("hello, boy \n" ...原创 2019-03-10 20:52:22 · 7560 阅读 · 0 评论 -
gdb的file命令加载程序
一file命令加载程序1格式file [可执行文件]2实战2.1新建test.cpp文件#include <stdio.h>int main(){ bool b=false; //如果文件命名为test.c就会报错,因为C语言没有bool类型 printf("hello, boy \n" ); return 0;}...原创 2019-03-15 21:30:24 · 14420 阅读 · 0 评论 -
gdb的run命令
一格式runarg1 arg2二传参数给程序并运行程序1源代码#include <iostream>using namespace std;int main(int argc, char *argv[]){ int i; if(argc==3) { cout<<"argc="<<...原创 2019-03-15 21:48:45 · 5326 阅读 · 0 评论 -
gdb的break命令设置断点
一指定在源代码的某行处设置断点1源代码#include <iostream>using namespace std;void zww(int age){ int a, b, c; if (age > 60) cout << "I am old\n"; else cout << "I...原创 2019-03-15 21:59:33 · 5584 阅读 · 0 评论 -
g++的基本使用
一点睛g++是GNU组织推出的C++编译器。它不但可以用来编译传统的C++程序,也可以用来编译现代C++,比如C++11/14等。g++的用法和gcc类似,编译C++的时候比gcc更简单,因为它会自动链接到C++标准库,而不像gcc需要手工指定。g++编译程序的内部过程和gcc一样,也要经过4个阶段:预处理、编译、汇编和链接。g++的基本语法格式如下:g++ [选项]准备...原创 2019-03-11 21:53:18 · 32019 阅读 · 0 评论 -
C++之与控制台交互
一cin的基本使用1代码#include <iostream>using namespace std;int main (){ int i; cout << "Please enter an integer value: "; cin >> i; cout << "The value you e...原创 2019-03-16 14:38:41 · 4383 阅读 · 0 评论 -
C++函数的高级话题实战
一按地址传递参数的函数1代码#include <iostream>using namespace std;void duplicate(int& a, int& b, int &c){ a *= 2; b *= 2; c *= 2;}int main(){ int x = 1, y = 3, z = 7...原创 2019-03-16 15:06:09 · 243 阅读 · 0 评论 -
C++的数组
一把数组作为参数1代码#include <iostream>using namespace std;void printarray(int arg[], int length) { for (int n = 0; n < length; n++) { cout << arg[n] << " "; } ...原创 2019-03-16 15:31:12 · 831 阅读 · 0 评论 -
C++各种指针
一第一个指针例子1代码#include <iostream>using namespace std;int main() { int value1 = 5, value2 = 15; int *p1, *p2; p1 = &value1; // p1 = address of value1 p2 = &value2; /...原创 2019-03-16 17:26:32 · 774 阅读 · 0 评论 -
C++动态分配内存
一代码#include <iostream>using namespace std;#include <stdlib.h>int main() { char input[100]; int i, n; long * l; cout << "How many numbers do you want to type i...原创 2019-03-16 20:45:27 · 295 阅读 · 0 评论 -
C++结构体
一一个结构体的例子1代码#include <iostream>using namespace std;#include <stdlib.h>#include <string.h>struct movies_t { char title[50]; int year;}mine, yours;void printmovi...原创 2019-03-16 21:05:14 · 1002 阅读 · 0 评论 -
C++字符串实战上
一第一个C++字符串例子1代码#include <iostream>#include <string>using namespace std;int main (){ string mystring = "This is a string"; cout << mystring<<endl; return 0;}...原创 2019-03-20 21:46:38 · 235 阅读 · 0 评论 -
C++字符串实战下
一找出字符串str中所有的abc1代码#include<iostream>#include<string>using namespace std;int main(){ string str("babccbabcaabcccbabccabcabcabbabcc"); int num = 0; size_t fi = str....原创 2019-03-20 21:50:21 · 172 阅读 · 0 评论 -
C++类以及构造函数实战
一第一个类的例子1代码#include <iostream>using namespace std;class CRectangle { int x, y;public: void set_values(int, int); int area(void) {return (x*y);}}; void CRectangle::set...原创 2019-03-17 14:38:10 · 318 阅读 · 0 评论 -
C++类的指针和操作符重载
一类的指针1代码#include <iostream>using namespace std;class CRectangle { int width, height;public: void set_values(int,int); int area(void) {return (width*height);}}; void CRe...原创 2019-03-17 15:03:28 · 1324 阅读 · 0 评论 -
C++关键字this和静态成员
一关键字this1代码#include <iostream>using namespace std; class CDummy {public: int isitme(CDummy& param);}; int CDummy::isitme(CDummy& param) { if (&param == thi...原创 2019-03-17 16:40:50 · 220 阅读 · 0 评论 -
C++友元函数和友元类实战
一友元函数的例子1代码#include <iostream>using namespace std; class CRectangle { int width, height;public: void set_values(int, int); int area(void) {return (width * height);} ...原创 2019-03-17 17:01:30 · 281 阅读 · 0 评论 -
C++类之间的继承
一被继承成员的访问权限1代码#include <iostream>using namespace std;class CPolygon {protected: int width, height;public: void set_values(int a, int b) { width = a; height = b; }}; clas...原创 2019-03-17 17:23:19 · 1083 阅读 · 0 评论 -
C++的多态实战
一指向基类指针的例子1代码#include <iostream>using namespace std;class CPolygon {protected: int width, height;public: void set_values(int a, int b) { width = a; height = b; }}...原创 2019-03-17 18:21:48 · 395 阅读 · 0 评论 -
C++模板实战
一第一个函数模板的例子1代码#include <iostream>using namespace std;template <class T> T GetMax(T a, T b) { T result; result = (a > b) ? a : b; return (result);}int main() { ...原创 2019-03-17 19:32:18 · 437 阅读 · 0 评论 -
C++命名空间实战
一点睛命名空间的作用在于全局对象或函数很有可能重名而造成重复定义的错误,命名空间的使用可以避免这些错误的发生。二命名空间的简单例子1代码#include <iostream>using namespace std;namespace first { int var = 5;} namespace second { double v...原创 2019-03-17 20:20:52 · 237 阅读 · 0 评论 -
C++异常处理实战
一点睛try语句块中的代码被正常执行。如果有例外发生,代码必须使用关键字throw和一个参数来抛出一个例外。这个参数可以是任意有效的数据类型,它的类型反映了例外的特征。如果有例外发生,也就是说try语句块中有一个throw指令被执行了,catch语句块就会被执行,用来接收throw传来的例外参数,二异常处理的例子1代码#include <iostream>...原创 2019-03-17 21:39:19 · 269 阅读 · 0 评论 -
C++预处理宏实战
一标准宏的例子1代码#include <iostream>using namespace std;// 标准宏名称#include <iostream>using namespace std;int main(){ cout << "This is the line number " << __L...原创 2019-03-18 21:52:53 · 222 阅读 · 0 评论 -
计算机的3种字符集
一点睛计算机字符集可归类3种:单字节字符集(SBCS)、多字节字符集(BMCS)和宽字符集(Unicode字符集)。二单字节字符集它的所有字符都只有一个字节的长度,SBSC是一个理论规范。具体实现时有两种字符集:ASCII字符集和扩展ASCII字符集。ASCII字符主要用于美国,全称是美国国家标准信息交换码,使用7位来表述一个字符,总共可以表示128个字符。在计算机刚刚在美...原创 2019-03-23 10:38:53 · 2036 阅读 · 0 评论 -
C++自定义异常和字符集合
一std:exception类简单使用1代码#include <iostream>#include <exception>using namespace std;struct MyException : public exception{ const char * what () const throw () { return "C++...原创 2019-03-23 11:11:04 · 278 阅读 · 0 评论 -
Unicode编码的实现
一点睛Unicode的实现和编码方式不一定等价。Unicode编码是一种理论层面的东西。Unicode编码的实现方式称为Unicode转换格式(UnicodeTransfomationFormat,UTF)。Unicode编码的实现方式主要由UTF-8,UTF-16,UFT-32等,分别以字节(BYTE)、字(OWORD,2个字节)、双子(DWORD,4个字节,实际只用了31位,最高位为...原创 2019-03-23 15:25:35 · 11600 阅读 · 3 评论 -
C++通过fork创建子进程实战
一代码#include <iostream>using namespace std;#include <unistd.h> #include <stdio.h> int main() { pid_t fpid; int count = 0; fpid = fork(); //返回子进程的进程...原创 2019-03-31 10:37:30 · 3264 阅读 · 0 评论 -
C++使用execl创建进程实战
一点睛exec用被执行的程序(新的程序)替换调用它(调用exec)的程序。相对于fork函数会创建一个新的进程,产生一个新的PID,exec会启动一个新的程序替换当前的进程,且PID不变。exec函数族的用法参考:https://blog.csdn.net/amoscykl/article/details/80354052下面是函数族中execl()函数用法实战。二使用exec...原创 2019-03-31 11:24:41 · 3741 阅读 · 0 评论 -
C++之execlp函数用法
一点睛execlp函数会从PATH环境变量所指得目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当作该文件的argv[0]、argv[1]......,最后一个参数必须用空指针(NULL)结束。execlp函数声明如下:int execlp(const char *filename, const char *arg, ...)如果执行成功,则函数不...原创 2019-03-31 11:54:29 · 14438 阅读 · 2 评论 -
Linux系统调用下的文件I/O编程
一点睛在Linux下对文件进行输入输出操作(I/O操作)有3中编程方式。1调用C库中文件的I/O函数,比如fopen、fread、fwrite、fclose等。2使用Linux的系统调用3 C++文件流的操作二I/O介绍I/O就是输入/输出,它是主存和外部设备(比如硬盘和U盘)之间复制数据的过程,其中数据从设备到内存的过程称为输入,数据从内存到设备的过程叫输出。I/...原创 2019-03-24 13:40:52 · 429 阅读 · 0 评论 -
系统调用文件读写操作
一从文件中读数据1代码#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>int main(void){ int fd = -1,i; ssize_t size ...原创 2019-03-24 14:01:19 · 1950 阅读 · 0 评论