index.rst称之为主文档,它被sphinx作为欢迎页面。 index.rst中包含了目录树指令toctree,sphinx使用它链接其他子文档。...接着我们就可以创建上面列出的文件并添加相应内容了,sphnix会自动将这些文档的章节标题插入到doctree指令的位置。...添加内容 在sphinx源文件中,使用reStructuredText标记语言进行文档编写,除此之外,sphinx还格外提供了一些指令。..... function:: enumerate(sequence[, start=0]) ... sphinx还提供了一些指令用于生成其他对象类型的文档。...自动生成文档注释 sphinx支持从python源代码中提取文档注释信息,然后生成文档,我们将这称之为autodoc。
术语及相似的片段信息 明晰的分层结构: 可以轻松的定义文档树,并自动化链接同级/父级/下级文章 美观的自动索引: 可自动生成美观的模块索引 精确的语法高亮: 基于 Pygments 自动生成语法高亮 开放的扩展: 支持代码块的自动测试...or hidden on build (y/n) [n]: y> coverage: checks for documentation coverage (y/n) [n]: y> imgmath: include...math, rendered as PNG or SVG images (y/n) [n]: y> mathjax: include math, rendered in the browser by...deselected.> ifconfig: conditional inclusion of content based on config values (y/n) [n]: y> viewcode: include...Sphinx 主要功能是使用 reStructuredText, 把许多文件组织成一份结构合理的文档. toctree指令初始值如下: .. toctree:: :maxdepth: 2 你可以在
本章将展示如何使用 CMake 构建代码文档,使用两个流行的框架:Doxygen 和 Sphinx。...紧随code-reference的文件包含 Breathe 指令,以在 Sphinx 中包含 Doxygen 生成的文档: Messaging classes ================= Message...设置被分组到构建类型(x86-Debug、x86-Release等)中,我们可以在顶部面板栏的中间在这些构建类型之间切换。 现在我们知道实际的构建路径,我们可以测试编译的可执行文件: $ ....我们将通过test_long.cpp扩展示例,其中包含以下代码: #include "sum_integers.hpp" #include #include int...准备就绪 我们将在前一个食谱的源代码中添加一个微小的变化,在src/sum_integers.cpp中,我们将添加一个函数 - sum_integers_unused: #include "sum_integers.hpp
例如: #include #include int main(){ std::cout << sqrt(9) << "\n"; } 使用rand()加上模运算符调用...例如,rand() % 29将输出 0 到28 之间的随机数 函数 C++ 函数由两个不同的部分组成: 声明:这包括函数的名称、返回类型是什么以及任何参数(如果函数将接受输入值,称为参数)。...定义:也称为函数体,它包含函数应该做什么的指令。...当一个函数被调用时,你将一个值传递给参数。该值称为实际参数或实参。参数列表是指函数参数的类型、顺序和数量。参数可选;也就是说,一个函数可能不包含任何参数。 函数体:函数体包含一组定义函数功能的语句。...C++中函数参数的传递方式有三种:传值、传地址、传引用。 这里先学习最简单的传值。在这种传递参数 中,我们传递存储或复制到函数形式参数中的参数值。因此,原始值不变,只是函数内部的参数发生了变化。
#define指令用于定义贯穿程序的长常量。...还有一种#define指令,是参数类型。可以传参,就像函数那样。该指令接收最多八个参数,表达式直接计算,并可在程序内使用。...diameter = 5.56; double circumference = CIRC(diameter); 上面的CIRC函数直接调用#define内的表达式 PI * dia,并将变量 diameter 传递给...# include指令 该关键字用于引入文件,并包含到程序内。引入的文件可包含变量,函数,类。有两种形式的include指令。...#include #define "Trade.mqh" 第一种,包含在中括号内,编译器会搜寻默认的include目录,也就是 、MQL5\Include子目录。
(char*)&n; *pc = 0; return 0; } 调试我们可以看到,代码1会将n的4个字节全部改为0,但是代码2只是将n的第⼀个字节改为0。...#include int main() { int a = 10; int* pa = &a; char* pc = &a; return 0; } 在上⾯的代码中,将⼀个...我们发现在main函数内部,创建了a和b,a的地址是0x00cffdd0,b的地址是0x00cffdc4,在调⽤Swap1函数时,将a和b传递给了Swap1函数,在Swap1函数内部创建了形参x和y接收...Swap1函数在使⽤的时候,是把变量本⾝直接传递给了函数,这种调⽤函数的⽅式我们之前在函数的时候就知道了,这种叫传值调⽤。...printf("交换后:a=%d b=%d\n", a, b); return 0; } 我们可以看到实现成Swap2的⽅式,顺利完成了任务,这⾥调⽤Swap2函数的时候是将变量的地址传递给了函数
(ePub)的文档等 支持 reStructuredText 或 Markdown 编写文档 被广泛使用的代码文档系统 代码示例语法高亮 活跃的官方和第三方扩展生态 1.2 Read the Docs...shown or hidden on build (y/n) [n]: > coverage: checks for documentation coverage (y/n) [n]: > imgmath: include...math, rendered as PNG or SVG images (y/n) [n]: > mathjax: include math, rendered in the browser by MathJax...) [n]: y > ifconfig: conditional inclusion of content based on config values (y/n) [n]: > viewcode: include...选择【默认分支】为 docs 将【Python 配置文件】改成 docs/source/conf.py 点击底部 【Save】按钮,保存更改。”
如果程序又出现问题,可以移除这条 #define NDEBUG 指令(或者把它注释掉),再次编译,这样就重新启用了 assert()语句。...详情可见:C语言函数第4节 实际上,这种调用方式是把变量本身的值传递给了函数,这种方法就叫做传值调用。 那怎么实现这个函数呢?...b); Swap(&a, &b); printf("a=%d b=%d\n", a, b); return 0; } 我们可以看到再次实现的Swap,顺利完成了任务,这里调用Swap函数的时候是将变量的地址传递给了函数...一维数组传参的本质 数组我们之前也讲过了,数组是可以传递给函数的,这个小节我们讨论一下数组传参的本质。...自然是数组存放的变量的类型,那指针的类型(以整形指针为例)是 int*,那么指针数组就写作这样了。 9. 指针数组模拟实现二维数组 了解了指针数组,我们不妨来做一个小测试。
指针变量类型的意义 3.1 指针的解引用 对比,下面2段代码,主要在调试时观察内存的变化 //代码1 #include int main() { int n = 0x11223344...pc = (char *)&n; *pc = 0; return 0; } 调试我们可以看到,代码1会将n的4个字节全部改为0,但是代码2只是将n的第⼀个字节改为0。...其实在main函数内部,创建了a和b,a的地址是0x00cffdd0,b的地址是0x00cffdc4,在调用 Swap1函数时,将a和b传递给了Swap1函数,在Swap1函数内部创建了形参x和y接收...Swap1函数在使用 的时候,是把变量本身直接传递给了函数,这种调用函数的方式叫传值调用。 结论:实参传递给形参的时候,形参会单独创建⼀份临时空间来接收实参,对形参的修改不影响实 参。..., &b); printf("交换后:a=%d b=%d\n", a, b); return 0; } 结果 我们可以看到实现成Swap2的方式,顺利完成了任务,这里调用Swap2函数的时候是将变量的地址传递给了函数
1.翻译环境 : 在这个环境中源代码转换为可执行的机器指令。(把C语言的代码转化为二进制指令 即可执行程序) 2.执行环境 : 它用于执行实际的代码。...到了编译阶段会进行对test.i文件的解读(包含 :语法分析,词法分析,语义分析,符号汇总)其中符号汇总为下阶段的符号表做准备,最后将test.i文件转化为汇编指令文件即test.s文件。...,加上了format类型格式,把输出控制符(%d,%f...)用format代替,且format需要单独的一个双引号,这样在传参的时候只需要传数据类型和输出控制符就可以实现把不同的输出控制符插入到字符串当中...宏的缺点: 1.每次使用宏的时候,一份宏定义的代码将插入到程序中。除非宏比较短,否则大幅度增加程序长度。 2.宏是没办法调试的。...就像他实际出现于#include指令的地方一样。 这种替换的方式很简单: 预处理器先删除这条指令,并用包含文件的内容替换。
local/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include...coreseek配置文件 配置文件主要修改的几个地方如下,具体的修改信息请参见 coreseek配置文件 目录的进行配置 source src1 { type = mysql #数据库类型...测试代码可以参见分享文件中的 测试代码 目录 require '....mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql --host=arm vi src/sphinxexpr.cpp #然后将所有的...-rw-r--r--. 1 root root 956 10月 13 21:27 sphinx-min.conf.dist 将sphinx.conf.dist文件复制一份名为csft.conf即可
指针运算 指针±整数 我们知道变量±整数与类型无关,在第一节指针类型变量的意义中讲解指针±整数与类型有关的相关内容。...3.2指针的使用和传地址调用 问题引入 有两个变量a=10,b=20.我们想让这两个值进行交换,按照之前的逻辑可能会写出这样的错误代码。 可以发现,这两个值并没有发生交换,这是为什么呢?...在调用Swap函数时,将a和b的值传给了x和y,并且为x和y单独开辟了一块空间,x的地址为0x00f3fd88,y的地址为0x00f3fd8c。...传址调用 使用指针了,在main函数中将a和b的地址传递给Swap函数,Swap 函数里边通过地址间接的操作main函数中的a和b,并达到交换的效果就好了。...调用Swap函数的时候是将变量的地址传递给了函数,这种函数调用方式叫:传址调用。 总结 传址调用,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量。
我们看下面两段代码 //代码1 #include int main() { int n = 0x11223344; int *pi = &n;...char *pc = (char *)&n; *pc = 0; return 0; } 这两个代码的结果是代码1会将n的4个字节全部改为0,但是代码2只是将n的第⼀个字节改为0。...传值调用和传址调用 传值调用 #include void Swap1(int x, int y) { int tmp = x; x = y; y...); printf("交换后:a=%d b=%d\n", a, b); return 0; } 我们可以看到实现成Swap2的⽅式,顺利完成了任务,这⾥调⽤Swap2函数的时候是将变量的地址传...递给了函数,这种函数调用方式叫:传址调用。
学习如何通过不同协议将 NGINX 请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。...代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过 HTTP以外的协议将请求传递给应用服务器。...二、将请求传递给代理的服务器当 NGINX 代理请求时,它将请求发送到指定的代理服务器,获取响应,并将其发送回客户端。...要将请求传递给 HTTP 代理服务器,则在一个 location 块内指定 proxy_pass 指令。...三、代理多个服务器在一个 location 块内指定 proxy_pass 指令可以代理一个服务器,也可以使用upstream指令代理多个服务器。
这就是为什么我么将一个数组传递给一个函数时,需要另外用一个参数传递数组元素个数的原因了。...这就意味着:这种数据传递是单向的,即从调用者传递给被调函数,而被调函数无法修改传递的参数达到回传的效果。...,在简单的情况下是可以的,但是如果返回值有其它用途(例如返回函数的执行状态量),或者要回传的数据不止一个,返回值就解决不了了。...「函数的指针」 每一个函数本身也是一种程序数据,一个函数包含了多条执行语句,它被编译后,实质上是多条机器指令的合集。在程序载入到内存后,函数的机器指令存放在一个特定的逻辑区域:代码区。...假如 short 类型占用 2 个字节,且存储的地址为 0x30。short a = 1; 如下图: #include //测试机器使用的是否为小端模式。
库函数可以直接使用,不需要额外的编写和编译 下面是一个使用库函数的示例代码,计算并打印正弦值: #include #include int main() {...ret_type是返回值的类型 fun_name是自定义函数名 para1是函数的形式参数 下面是一个自定义函数的示例代码,用于计算两个整数的和: #include // 自定义函数...下面用代码事例来进一步阐述: #include // 函数定义,使用形式参数 void printSum(int a, int b) { int sum = a + b;...,将实际参数的值复制给形式参数,二者的地址是不同的,即函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参 5.2传址调用 (传递地址) 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式...在main()函数中,我们声明了两个整数变量x和y,并将它们作为实际参数传递给add()函数。add()函数返回x + y的结果,然后将这个结果作为实际参数传递给multiply()函数。
,带参数的宏替换和函数传参是非常相似的,但是它们的传参是有本质区别的。...但是和函数相比宏还是有劣势的: 每次使用宏的时候,一份宏定义的代码将插入到程序中,除非宏比较短,否则可能大幅度增加程序的长度 宏是不能调试的 宏由于无关类型,也就不够严谨,所以宏定义是不够安全的 宏可能会带来运算符优先级的问题...,表达式的求值结果更容易预测 带有副作用的参数 参数可能被替换到宏体中的多个位置,如果宏的参数被多次计算,带有副作用的参数求值可能会产生不可预测的结果 函数参数只在传参的时候求值一次,结果更容易控制 参数类型...但是这样查找的效率比较低,也不容易区分是库文件还是本地文件 12.2 嵌套文件的包含 我们已经知道,#include指令可以使另外一个文件被编译,就像它实际出现于#include指令的地方一样。...预编译指令能够简化代码结构、提高代码的重用性和可维护性。学习预编译过程可以帮助程序员更好地利用预编译指令优化代码结构,提高代码的质量。
然后使用如下编译指令进行编译 sphinx-autobuild source build/html 编译结果如下: ?...4 项目托管到gitee 以上的操作,只能在本地的浏览器查看文档,若想让所有人都能看到,需要部署到ReadtheDocs展示,在部署之前,要把代码托管到代码托管平台,这里选用gitee,国内使用速度快。...先到gitee上(https://gitee.com/)建立一个公开的仓库,然后将本地项目文件上传即可,如我是建立一个名为SphinxDemo的仓库。...git指令来将文件上传到仓库: git init git add -A git commit -m "first commit" git remote add origin https://gitee.com...将gitee仓库的HTTPS链接复制过来 ? 填写项目名称,填写gitee仓库的HTTPS链接 ? 然后就可以点击Build version进行项目构建了 ?
加载器的理解: argv这个参数会被传递给ls,其实exec系列接口含义也是如此,在命令行参数中,有所的进程都是bash的子进程,所以exec其实就是一个代码级别的加载器,他可以做到将可执行程序的代码和数据导入到内存中...,然后再调用main函数的时候将argc参数传递给程序,其实就相当于是你在执行该程序之前,优先给你加载出来一个栈帧结构。...(1)任何语言都有像exec这类的接口 (2)语言可以互相调用的原因是 无论是什么语言写的程序 在操作系统看来都是进程 1.5.3 将命令行参数和环境变量传递给另一个程序 环境变量是在子进程创建的时候就默认继承了...2、彻底替换环境变量——>execle、execve 就使用execle系列的接口,然后将myenv(自定义的)传进去 就相当于是覆盖!!...3、我们要做指令的判断,所以我们可以设置一个返回值来判断当前的命令是否被当成内建命令来执行,如果不是的话就要执行普通代码的逻辑 2.7 整体代码逻辑 #include #include
包含指令 Breathe 提供了广泛的自定义指令,允许将 Doxygen 生成的文档转换为 reST 文件。...Sphinx,许多 Python 项目用于构建和链接项目文档的工具,将 rST 转换为 HTML 和其他格式。...包含指令 Breathe 提供了各种自定义指令,允许将 Doxygen 生成的文档转换为 reST 文件。...文档字符串 当将Sphinx与 NumPy 约定结合使用时,应使用numpydoc扩展,以使您的文档字符串被正确处理。...包含指令 Breathe提供了各种自定义指令,允许将Doxygen生成的文档转换为 reST 文件。
领取专属 10元无门槛券
手把手带您无忧上云