zoukankan      html  css  js  c++  java
  • gcc 源代码分析-前端篇3

    3. GCC怎样函表示一个函数
      对c语言来说。函数是其核心,全部的东西都在环绕着函数在转。对于一个函数来说。它基本的一些特性例如以下:
     
     1. 有一个返回值,在这里我们没有把返回值的函数觉得它的返回值是void;
     2. 它有传入的參数。而这个參数个数不确定。可多可少,也能够没有;
     3. 它有一个函数名称,这个名称具有唯一性,也就是同一个project,不能有名称一样的多个函数。
     4. 它有函数运行体;

     对于函数来说,还是通过struct tree_decl结构来表示:
     filename:函数所在文件名称。
     linenum: 函数所在的行号。
     print_name: 函数名称,asii 表示;
     assembler_name: 函数名的内部名称,asii表示;
     name:    函数的名字。用一个struct tree_identifier结构来表示;
     common::type 表示函数类型,这个实际上是一个tree_type的结构来表示。它的common::type表示函数的返回类型
                  它实际上就是在初始化时生成的表示数据类型的节点,假设是int型。它就是一个int 型节点;
                  它的values 成员记录的是函数的參数。是一个struct tree_int_cst类型,通过它的chain把几个參数串连起来。

     对于这种一个源码:
     void main()
     {
       
       
     }
     它最后转成一棵语法树,可是这个树仅仅有一个节点,就是表示函数的节点,它实际上是一个struct tree_decl结构。它的name成员表示
     函数的名称,type 成员里面既记录了函数返回值。也记录了函数的參数。
  • 相关阅读:
    LeetCode 189. Rotate Array
    LeetCode 965. Univalued Binary Tree
    LeetCode 111. Minimum Depth of Binary Tree
    LeetCode 104. Maximum Depth of Binary Tree
    Windows下MySQL的安装与配置
    LeetCode 58. Length of Last Word
    LeetCode 41. First Missing Positive
    LeetCode 283. Move Zeroes
    《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》读后感
    删除docker下的镜像
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6979335.html
Copyright © 2011-2022 走看看