C语言一窝端 —持续更新
内容
text4C = '''
/*
migration n.迁移; 移居; 迁徙; (计算机系统的)改变; (程序或硬件的)迁移,转移;
[例句]Swallows begin their migration south in autumn.
燕子在秋季开始向南方迁移。
*/
/*
C 语言是一种通用的、面向过程式的计算机程序设计语言。
1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。
当前最新的 C 语言标准为 C18。
关于C
C 语言标准是于 1988 年由美国国家标准协会(ANSI,全称 American National Standard Institute)制定的。
截至 1973 年,UNIX 操作系统完全使用 C 语言编写。
当今最流行的 Linux 操作系统和 RDBMS(Relational Database Management System:关系数据库管理系统) MySQL 都是使用 C 语言编写的。
C11(也被称为C1X)指ISO标准ISO/IEC 9899:2011。在它之前的C语言标准为C99。
新特性
对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及<stdalign.h>头文件)。
_Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。
_Generic 关键字。
多线程(Multithreading)支持,包括:
_Thread_local存储类型标识符,<threads.h>头文件,里面包含了线程的创建和管理函数。
_Atomic类型修饰符和<stdatomic.h>头文件。
增强的Unicode的支持。基于C Unicode技术报告ISO/IEC TR 19769:2004,增强了对Unicode的支持。
包括为UTF-16/UTF-32编码增加了char16_t和char32_t数据类型,提供了包含unicode字符串转换函数的头文件<uchar.h>。
删除了gets() 函数,使用一个新的更安全的函数gets_s()替代。
增加了边界检查函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。
增加了更多浮点处理宏(宏)。
匿名结构体/联合体支持。这个在gcc早已存在,C11将其引入标准。
静态断言(Static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理。
新的 fopen() 模式,("…x")。类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。
新增 quick_exit() 函数作为第三种终止程序的方式。当 exit()失败时可以做最少的清理工作。
C 环境设置【略】
*/
digraph graph4C {
graph [compound = true rankdir = LR]
node [fontsize = 11 fontname = "SimSun" shape = box]
edge [fontname = "SimsSun" shape = box]
"C语言学习图" [shape = "plaintext" fontsize = 15]
"C基本语法"
"C的令牌(Token)"
"分号 ;"
"注释"
"单行注释"
"多行注释"
"标识符"
"关键字"
keyword4C [label= "" image="image\\keyword4C.png" imagepath="" imagescale=true shape=box style=dashed]
/*
# label设为空字符串,否则其将出现在图片中!
# image 与(已弃用)shapefile属性不同,图像被视为节点内容而不是整个节点。特别是,图像可以包含在任何形状的节点中,而不仅仅是矩形。
# 当imagescale=True 报错 TypeError: expected string or bytes-like object
# If imagescale=true, the image is uniformly scaled (i.e., its aspect ratio is preserved) to fit inside the node.
# At least one dimension of the image will be as large as possible given the size of the node.
# imagepath image指定要在其中查找由属性指定的图像文件的目录列表,或者使用类似 HTML 的标签IMG中的元素。
# imagepath应该是(绝对或相对)路径名的列表,每个路径名由分号;(对于 Windows)或冒号: (所有其他操作系统)分隔。
# 找到给定名称文件的第一个目录将用于加载图像。
# 如果imagepath未设置,则图像文件的相对路径名将根据当前工作目录进行解释。
# rotate="40" 旋转功能暂时不考虑!!
*/
"C中的空格"
"C的令牌(Token)的说明" [shape=none, margin=0, label = <
<table width="100%" border="1" cellspacing="0" cellpadding="1" bgcolor="white">
<!--border单元格边;cellspacing单元格间距:单元格与单元格之间的距离;cellpadding单元格边距:单元格里面的内容与边的距离。-->
<!--HTML 转义字符:在 HTML 中拥有特殊含义的字符,比如小于号,大于号,
如果希望浏览器正确地显示这些字符,必须在 HTML 源码中插入字符实体。
字符实体有三部分:一个和号 (&),一个实体名称,或者 # 和一个实体编号,以及一个分号 (;)。-->
<tr>
<td align="center"><b>令牌</b></td> <!--<b>为黑体-->
<td align="center"><b>说明</b></td>
</tr>
<tr>
<td port="here1">C</td><td>C 是区分大小写的编程语言</td>
</tr>
<tr>
<td port="here2">单行注释</td><td>双斜杠开头</td>
</tr>
<tr>
<td port="here3">多行注释</td><td>双斜杠内的两米字号内,不能在注释内嵌套注释</td>
</tr>
<tr>
<td port="here4">标识符</td>
<td>用来标识变量、函数,或任何其他用户自定义项目的名称,<br/>
以字母 A-Z 或 a-z 或下划线 _ 开始,<br/>后跟零个或多个字母、下划线和数字(0-9)</td>
</tr>
<tr>
<td port="here5">C中的空格</td>
<td>只包含空格的行,被称为空白行,<br/>可能带有注释,C 编译器会完全忽略它。</td>
</tr>
</table>>]
"C基本语法" -> "C的令牌(Token)"
"C的令牌(Token)" -> "分号 ;"
"C的令牌(Token)" -> "注释"
"注释" -> "单行注释"
"注释" -> "多行注释"
"C的令牌(Token)" -> "标识符"
"C的令牌(Token)" -> "关键字"
"关键字" -> keyword4C
"C的令牌(Token)" -> "C中的空格"
"单行注释" -> "C的令牌(Token)的说明":here2
"多行注释" -> "C的令牌(Token)的说明":here3
"标识符" -> "C的令牌(Token)的说明":here4
"C中的空格" -> "C的令牌(Token)的说明":here5
"C数据类型"
"类型与描述" [label= "" image="image\\datatype4C.png" imagepath="" imagescale=true shape=box style=dashed]
"C数据类型" -> "类型与描述"
"基本类型" [label= "" image="image\\basetype4C.png" imagepath="" imagescale=true shape=box style=dashed]
"void类型" [label= "" image="image\\voidtype4C.png" imagepath="" imagescale=true shape=box style=dashed]
"类型与描述" -> "基本类型"
"类型与描述" -> "void类型"
subgraph cluster_0 {
graph [compound =true style=dashed]
node [fontsize = 11 fontname = "SimSun" shape = box]
edge [fontname = "SimsSun" shape = box]
label = ""
}
}
'''
dot = graphviz.Source(text4C)
dot.render(outfile='graph4C.png')
dot
逻辑图 the map of C language
参考
https://www.runoob.com/cprogramming/c-tutorial.html