首页 > 其他分享 >笔记

笔记

时间:2024-11-17 10:29:22浏览次数:1  
标签:-- library 笔记 print path Display compiler

简介

《C++ Primer 中文版(第 5 版)》学习仓库,包括笔记课后练习答案

环境

  • System:Ubuntu 16.04
  • IDE:VS Code
  • Compiler:g++

熟悉编译器

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 as
                           a 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 and
                           multiple 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 relative
                           prefixes 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 headers
                           and 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 files
                           Permissible languages include: c c++ assembler none
                           'none' means revert to the default behavior of
                           guessing 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文件。

避免多次包含同一头文件

#ifdef 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

参考

豆瓣链接
C++ Primer 5
《C++ Primer》第五版中文版习题答案
C++ 在线编辑器

标签:--,library,笔记,print,path,Display,compiler
From: https://www.cnblogs.com/sys-123456/p/18550278

相关文章

  • YOLOv7-0.1部分代码阅读笔记-torch_utils.py
    torch_utils.pyutils\torch_utils.py目录torch_utils.py1.所需的库和模块2.deftorch_distributed_zero_first(local_rank:int): 3.definit_torch_seeds(seed=0): 4.defdate_modified(path=__file__): 5.defgit_describe(path=Path(__file__).parent): 6.def......
  • 【C++笔记】一维数组元素处理
    目录1.插入元素方法代码2.删除元素方法代码3.交换元素方法代码1.插入元素方法概念:插入元素是指在数组的某个位置添加一个新元素,并将原来的元素向后移动。例如,将5插入到数组[1,2,4,6]的第二个位置,结果变为[1,5,2,4,6]。关键点:确定插入位置:首先要明......
  • 从零开始的 LLM: nanoGPT 学习笔记(1/2)
    项目地址:nanoGPT作者是OpenAI的元老人物AndrejKarpathy,以非常通俗易懂的方式将LLM的pre-train娓娓道来,YouTube上也有对应的视频:Let'sbuildGPT:fromscratch,incode,spelledout.其中高赞回复是这样的,总结非常精辟:justforfun,droppingonYouTubethebesti......
  • 线性回归学习笔记
    线性回归概述线性回归是一种基本的监督学习算法,用于解决回归问题。它通过拟合数据点,找出特征与目标变量之间的线性关系。其目标是预测连续数值输出。模型公式线性回归模型的数学表达式为:\[y=\mathbf{w}^\top\mathbf{x}+b\]或展开为:\[y=w_1x_1+w_2x_2+\cdot......
  • ADS项目笔记 1. 低噪声放大器LNA天线一体化设计
            在传统射频结构的设计中,天线模块和有源电路部分相互分离,两者之间通过50Ω传输线级联,这种设计需要在有源电路和天线之间建立无源网络,包括天线模块的输入匹配网络以及有源电路的匹配网络。这些无源网络不仅增加了系统的插入损耗,还会占用额外的电路面积,从而影......
  • 工作学习笔记(十)Java 中 “<” 运算符不能应用于BigDecimal和double
    一、问题描述在Java编程过程中,尝试使用“<”运算符对java.math.BigDecimal和double类型的数据进行比较时,出现了编译错误:“Theoperator<isundefinedfortheargumenttype(s)java.math.BigDecimal,double”。二、问题分析Java中的基本数据类型(如int、double等)......
  • 对话框切换器FXSwitcher(Abaqus GUI二次开发笔记)
    实现效果         进行abaqusGUI二次开发时,如果想要实现点选不同单选按钮出现不同的GUI布局,可以使用切换器FXSwitcher。本文构造的插件能选择不同的模型输入源,对话框中间是一对单选按钮,下方是文件选择器或模型列表。当选中单选按钮"model"时,下方显示模型列表......
  • Living-Dream 系列笔记 第86期
    边双连通分量概念:若在无向图\(G\)中,存在一个极大子图\(G'\),使得\(G'\)中没有割边,则称\(G'\)为\(G\)的一个边双连通分量,记作\(\texttt{E-DCC}\)。使用场景:将无向图转化为一棵树(即无向图上的缩点)。求解步骤:确定割边,再遍历所有点且不经过割边,那么能联通的点都是即在同一......
  • Solidity学习笔记-1
    01.HelloWorld开发工具Remix//SPDX-License-Identifier:MIT//软件许可,不写编译会出现警告//版本,“0.8.21”-->不能小于这个版本,"^"-->不能大于0.9.0pragmasolidity^0.8.21;//创建合约contractHelloWorld{stringpublichelloworld="HelloWorld!";}......
  • UEFI 笔记 002 —— PrintLib.h
    https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Library/PrintLib.h//MdePkg\Include\Library\PrintLib.h//--2024-11-16////Thisfunctionissimilarassnprintf_sdefinedinC11.UnicodeSPrint(OUTCHAR16*,INUINTN,INconstCHAR16*......