易截截图软件、单文件、免安装、纯绿色、仅160KB

可变目标C编译器 第4章 类型

C程序中具有丰富的数据类型,包括声明中显式定义的类型和用做表达式中间类型的导出类型。例如,下面的赋值语句包含3 种不同类型:
    int *p, x;
    *p = x;
x是一个存放整数的单元的地址,因此x的地址的类型是:指向一个整数的指针。x的值的类型是整型。同样, p的左值的类型是指向一个整数的指针的指针,p的右值的类型是指向一个整数的指针,*p的类型是整数。lcc在编译赋值语句时必须处理所有这些类型。
lcc实现了类型表示和一组该表示之上的函数,本章将对此进行介绍。函数包括创建类型的类型构造函数以及测试类型 的类型断言函数。lcc还必须实现类型检查,确保声明和表达式遵守语言制定的规则。类型检查使用本章介绍的断言函数,详细参见第9章和第11章。
4.1 类型表示
C语言的类型通常用英文的前缀形式描绘,所谓前缀形式,就是指类型操作数在类型操作符之后出现。例如,int *p声明p是一个指向int的指针,就是C类型int*的前缀表示,指针是操作符,int是操作数,同样,char*(*strings)[10]将strings说明为:
    一个指针,指向
       一个大小为10的数组,每个数组元素是一个
          指针,指向
             字符
操作数在它们各自的操作符下以阶梯方式缩进。
表示这种前缀类型规范的方法有很多。例如,一些老的C编译器使用位串来表示,类型操作符和基本类型用若干位编码。位串表示非常紧凑并易于操作,但是一般会对基本和操作符的数目做一定限制,并且不能拥有表示大小的数据,例如不能表示数组的大小。
lcc 通过能反映类型的前缀规范的链接结构来表示类型,类型节点定义如下:
    (types.c typedefs) =
        typedef struct type * Type;
    (types.c exported types) =
          struct type {
                int    op;
                Type type;
                int    align;
                int    size;
         &


相关文档:

C和C++程序员学习历程

如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。
  一家之言,欢迎拍砖哈。
  1、可以考虑先学习C.
  大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语 ......

s3c2440基于linux的gpio led字符设备驱动实践

 今天完成了嵌入式linux的第一个驱动的编写和测试,虽然是个简单的程序,但是麻雀虽小,五脏俱全,希望可以给刚开始接触驱动编写的人一些提示,共同进步。
源代码:
分析如下:
      下面是我的驱动程序:
#include <linux/config.h>//配置头文件
#include <linux/kernel.h&g ......

c获得文件大小

 1.MFC中的方法:(C++)
CFileStatus status;
CFile::GetStatus("D:\\test.txt",status);
long lSizeOfFile;
lSizeOfFile = status.m_size;
lSizeOfFile的值就是D:\\test.txt文件的大小
2.标准C获得文件大小的5种方法
(注意:"__FILE__"指的是当前文件,你可以改为有效路径的目标文件,比如"D:\\test.txt")
#i ......

生产者 消费者问题实现 (linux下C语言)

操作系统的一个经典问题是"生产者-消费者"问题, 这涉及同步信号量和互斥信号量的应用, 在这里,我用线程的同步和互斥来实现.
/*
* author 张文
* 2008/06/20
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <semaphore.h> ......

C/C++ 内置类型的数值范围

Data   Type   Ranges  
  C/C++   recognizes   the   types   shown   in   the   table   below.  
   
  Type   Name   Bytes   Other   Names   Range   of   Values    
&nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号