C++
基础打好,所以重新刷一遍C++ Primier Plus
,这个博客做一下记录。g++
其实是gcc
针对c++
的一个版本。
c++
的标准库。选项 | 解释 |
---|---|
-ansi |
只支持ANSI 标准的C 语法 |
-c |
只编译并生成目标文件 |
-E |
只运行C 预编译器 |
-g |
生成调试信息 |
-IDIRECTORY |
指定额外头文件搜索路径 |
-LDIRECTORY |
指定额外函数库搜索路径 |
-o |
生成指定输出文件 |
-O0 |
不进行优化处理 |
-O (同-O1 ) |
生成优化代码 |
-O3 |
最高级优化,包括inline 函数 |
-shared |
生成共享目标文件 |
-static |
禁止使用共享链接 |
-w |
不生成任何警告信息 |
-Wall |
生成所有警告信息 |
-std |
选择编译语言的标准 |
filename
为可执行文件a.out
。g++ <filename>
filename
指定输出文件名为execname
。g++ <filename> -o <execname>
filename
为目标代码filename.o
。g++ -c <filename>
filename.o
与其任何库链接起来,并创建一个名为execname
的可执行文件。g++ -o <execname> <filename>.o
创建目标代码后,可以通过将目标代码与其他预编译代码段(其他
.o
文件)链接来创建可执行文件。
sys/socket.h
),从名为filename
的文件编译名为execname
的可执行文件。g++ -o <execname> <filename> -lxnet
平台 | 扩展名 |
---|---|
UNIX |
C、cc、cxx |
GNU C++ |
C、cc、cxx、cpp、c++ |
Microsoft Visual C++ |
cpp、cxx、cc |
参数 | 链接库 |
---|---|
-lxnet |
套接字对象库 |
-lm |
数学库 |
-lpthread |
线程库 |
-lg++ |
C++库 |
wiki
c99.pdf
ANSI C
现在被几乎所有广泛使用的编译器支持。现在多数C
代码是在ANSI C
基础上写的。wiki
oracle.docs
-G
选项生成的输出形式。csdn
-std
选项即可手动控制G++
编译程序时所使用的编译标准。-std=c++11
表示支持C++11
标准,-std=gnu++11
表示支持C++11
标准和GNU
拓展。fsu.edu
main()
函数中隐含语句结尾:return 0;
C++
程序时,通常从main()
函数开始执行。但在Windows
编程中,可以编写动态链接库DLL
,不需要main()
。有些编程环境提供一个框架程序,其中隐藏的
main()
调用_tmain()
。
using
编译指令简化程序:using namespace std;
若编译器不接受,说明它不遵守
C++98
标准。
C++
头文件没有拓展名,部分C
头文件去掉.h
并在开头加上c
变为C++
的头文件。#include<math.h> //c #include<cmath> //cpp
头文件类型 | 方式 | 说明 |
---|---|---|
C 旧式 | .h 结尾 |
C、C++都可用 |
C++旧式 | .h 结尾 |
仅C++可用 |
C++新式 | 无拓展名 | 仅C++可用,使用namespace |
转换后的C | 加前缀c,无拓展名 | 仅C++可用,使用namespace |
cout
中是运算符重载,使得其有不同的作用。wiki
DLL
档,当可执行文件调用到DLL
档内的函数时,Windows
操作系统才会把DLL
档加载存储器内,DLL
档本身的结构就是可执行档,当程序有需求时函数才进行链接。microsoft
iostream.h
和cout
)转换为名称空间代码(使用iostream
和std::cout
),所以using
编译指令简化了这个过程。// using声明 using std::cout; //使cout有效 using std::cin; //使cin有效 // using编译指令 using namespace std; //使std中所有变量名有效
runoob