第一章 开始
熟悉编译器
g++:
- 编译:
g++ --std=c++11 ch01.cpp -o main - 运行:
./prog1 - 查看运行状态:
echo $? - 编译多个文件:
g++ ch2.cpp Sales_item.cc -o main
输入 g++ --help,查看编译器选项:
Usage: g++ [options] file...Options:-pass-exit-codes Exit with highest error code from a phase--help Display this information--target-help Display target specific command line options--help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]Display specific types of command line options(Use '-v --help' to display command line options of sub-processes)--version Display compiler version information-dumpspecs Display all of the built in spec strings-dumpversion Display the version of the compiler-dumpmachine Display the compiler's target processor-print-search-dirs Display the directories in the compiler's search path-print-libgcc-file-name Display the name of the compiler's companion library-print-file-name=<lib> Display the full path to library <lib>-print-prog-name=<prog> Display the full path to compiler component <prog>-print-multiarch Display the target's normalized GNU triplet, used asa component in the library path-print-multi-directory Display the root directory for versions of libgcc-print-multi-lib Display the mapping between command line options andmultiple library search directories-print-multi-os-directory Display the relative path to OS libraries-print-sysroot Display the target libraries directory-print-sysroot-headers-suffix Display the sysroot suffix used to find headers-Wa,<options> Pass comma-separated <options> on to the assembler-Wp,<options> Pass comma-separated <options> on to the preprocessor-Wl,<options> Pass comma-separated <options> on to the linker-Xassembler <arg> Pass <arg> on to the assembler-Xpreprocessor <arg> Pass <arg> on to the preprocessor-Xlinker <arg> Pass <arg> on to the linker-save-temps Do not delete intermediate files-save-temps=<arg> Do not delete intermediate files-no-canonical-prefixes Do not canonicalize paths when building relativeprefixes to other gcc components-pipe Use pipes rather than intermediate files-time Time the execution of each subprocess-specs=<file> Override built-in specs with the contents of <file>-std=<standard> Assume that the input sources are for <standard>--sysroot=<directory> Use <directory> as the root directory for headersand libraries-B <directory> Add <directory> to the compiler's search paths-v Display the programs invoked by the compiler-### Like -v but options quoted and commands not executed-E Preprocess only; do not compile, assemble or link-S Compile only; do not assemble or link-c Compile and assemble, but do not link-o <file> Place the output into <file>-pie Create a position independent executable-shared Create a shared library-x <language> Specify the language of the following input filesPermissible languages include: c c++ assembler none'none' means revert to the default behavior ofguessing the language based on the file's extension
输入 g++ -v --help可以看到更完整的指令。
例如还有些常用的:
-h FILENAME, -soname FILENAME: Set internal name of shared library-I PROGRAM, --dynamic-linker PROGRAM: Set PROGRAM as the dynamic linker to use-l LIBNAME, --library LIBNAME: Search for library LIBNAME-L DIRECTORY, --library-path DIRECTORY: Add DIRECTORY to library search path
获得程序状态:
- windows:
echo %ERRORLEVEL% - UNIX:
echo $?
IO
#include <iostream>std::cout << "hello"std::cin >> v1
记住>>和<<返回的结果都是左操作数,也就是输入流和输出流本身。
endl:这是一个被称为操纵符(manipulator)的特殊值,效果是结束当前行,并将设备关联的缓冲区(buffer)中的内容刷到设备中。
UNIX和Mac下键盘输入文件结束符:ctrl+d,Windows下:ctrl+z
头文件:类的类型一般存储在头文件中,标准库的头文件使用<>,非标准库的头文件使用""。申明写在.h文件,定义实现写在.cpp文件。
避免多次包含同一头文件:
#ifndef SALESITEM_H#define SALESITEM_H// Definition of Sales_itemclass and related functions goes here#endif
成员函数(类方法):使用.调用。
命名空间(namespace):使用作用域运算符::调用。
注释
- 单行注释:
// - 多行注释:
/**/。编译器将/*和*/之间的内容都作为注释内容忽略。注意不能嵌套。
#define SALESITEM_H/** 多行注释格式* 每一行加一个**/
while语句
循环执行,(直到条件(condition)为假。
for语句
循环头由三部分组成:
- 一个初始化语句(init-statement)
- 一个循环条件(condition)
- 一个表达式(expression)
使用文件重定向
./main <infile >outfile
