湘潭网站建设问下磐石网络,怎么用wordpress做网盘,沈阳男科最好的男科医院,影楼公共网站UG/Open API语法-数据类型数据类型struct-声明结构体变量union-声明联合数据类型enum-声明枚举类型枚举与#define宏的区别typedef-用于给数据类型取别名(当然还有其他作用)数据类型
UG/Open API编程接口是C语言的语法格式#xff0c;因而#xff0c;它支持C语言的标准数据类…
UG/Open API语法-数据类型数据类型struct-声明结构体变量union-声明联合数据类型enum-声明枚举类型枚举与#define宏的区别typedef-用于给数据类型取别名(当然还有其他作用)数据类型
UG/Open API编程接口是C语言的语法格式因而它支持C语言的标准数据类型除此之外UG/Open API大量使用了 类型定义如struct声明结构体变量、enum枚举类型、union联合数据类型等 UG/Open API数据结构的命名规则是_t——数据类型_s——结构体类型_u_t——共用体类型_t_p——数据类型指针_u_p_t——共用体类型指针。 如
union UF_STYLER_value_u
{char *string;char **strings;int integer;int *integers;double real;double *reals;UF_UI_selection_p_t selection;UF_STYLER_notification_p_t notify;UF_UI_attachment_t attach;UF_UI_option_toggle_t option_toggle;
};
typedef union UF_STYLER_value_u UF_STYLER_value_t;上面的数据类型UF_STYLER_value_u是定义的共用体数据类型通过typedef union关键字把UF_STYLER_value_u数据类型定义成UF_STYLER_value_t别名即通过UF_STYLER_value_u和UF_STYLER_value_t定义的数据类型都表示同一种类型。 UF_STYLER_value_t数据类型主要用在UF_STYLER_item_value_type_s数据类型中作为它的成员UF_STYLER_item_value_type_s表示定义的是结构体类型的数据定义如下
struct UF_STYLER_item_value_type_s
{int reason;const char *item_id;int subitem_index;int count;int item_atttr;int indicator;UF_STYLER_value_t value;
};此外在UG/Open API中用来识别对象的数据类型是tag_t是对象语柄实际上tag_t是无符号整数数据类型在uf_defs.h中定义如下
typedef unsigned int tag_t,*tag_p_t; 大多数情况下数据类型都在相应的头文件中有说明因此对于在程序中使用到的数据类型也应在程序开头将相应的头文件用#include包含进来。下面是获取当前显示模型句柄tag_t,并将其关闭的代码
tag_t tModel;
tModel UF_PART_ask_display_part ();
UF_PART_CLOSE( tModel , 1 , 1 );struct-声明结构体变量
首先介绍一下什么是定义什么是声明它们有何区别 什么是定义所谓的定义就是编译器创建一个对象为这个对象分配一块内存并给它取上一个名字(即我们经常说的变量名或对象名)。但注意这个名字一旦和这块内存匹配它们就同生共死。一个变量或对象在一定区域比如函数内全局等只能被定义一次否则编译器会提醒你重复定义同一个变量或对象。 什么是声明有两重含义如下 第一重含义告诉编译器这个名字已经匹配到一块内存上了下面的代码用到的变量或对象是在别的地方定义的。声明可以出现多次。 第二重含义告诉编译器这个名字我先预定了别的地方再也不能用它来作为变量名或对象名。比如你在图书馆用书占了个位子但你本人并没坐在这儿。这种声明最典型的例子就是函数参数的声明例如
void fun (int i , char c);定义声明最重要的区别定义创建了对象并为这个对象分配了内存声明没有分配内存。 struct是个神奇的关键字它将一些相关联的数据打包成一个整体方便使用。 平时我们要求函数的参数尽量不超过4个如果函数的参数多于4个使用起来非常容易出错包括每个参数的意义和顺序都容易弄错效率也会降低与具体CPU有关ARM芯片对于超过4个参数的处理就很讲究具体请参考相关资料。这个时候可以用结构体压缩参数个数。 在C中struct和class关键字一般可以通用只有一个很小的区别。struct的成员默认情况下属性是public的而class成员却是private的。
union-声明联合数据类型
union关键字的用法与struct的用法非常类似。 union维护足够的空间来置放多个数据成员中的“一种”而不是为每一个数据成员配置空间在union中所有的数据成员共有一个空间同一时间只能储存其中一个数据成员所有的数据成员具有相同的起始地址。如
union StateMachine
{char character;int number;char *str;double exp;
};一个union只配置一个足够大的空间来容纳最大长度的数据成员如上例最大长度是double型态所以StateMachine的空间大小就是double数据类型的大小。 在C中union的成员默认属性为public。union主要用来压缩空间。如果一些数据不可能在同一时间同时被用到则可以使用union。 例子用程序确认当前系统存储是大端模式还是小端模式请写一个C函数若处理器是Big_endian则返回0若是Little_endian则返回1。 注大端模式Big_endian)字数据的高字节存储在低地址而字数据的低字节则存放在高地址中。 小端模式Little_endian)字数据的高字节存储在高地址而字数据的低字节则存放在低地址中。 对union型的成员的存取都是对该联合体基地址的偏移量为0处开始也就是联合体的访问不论对哪个变量的存取都是从union的首地址开始。
int checkSystem() //检查系统存储方式为大端模式还是小端模式
{union check{int i;char ch;}c; //联合体c在内存中占4字节c.i 1; //变量i占4字节但只有一个字节值为1另外三个字节为0return (c.ch 1);
}enum-声明枚举类型
定义方法
enum enum_type_name
{ENUM_CONST_1,ENUM_CONST_2,...ENUM_CONST_n
}enum_variable_name;注意enum_type_name是自定义的一种数据类型名即enum_type_name类型是对一个变量取值范围的限定而花括号内是它的取值范围即enum_type_name类型的变量enum_variable_name只能取值为花括号内的任何一个值如果赋给该变量的值不在列表中会报错。ENUM_CONST_1、ENUM_CONST_2、…、ENUM_CONST_n这些成员就是我们平时所说的枚举常量常量一般大写。**enum变量类型还可以给其中的常量符号赋值如果不赋值则会从被赋初值的那个常量开始依次加1如果都没有赋值他们的值从0开始依次递增1.如分别用一个常数表示不同颜色
enum color
{GREEN 1,RED,BLUE,GREEN_RED 10,GREEN_BLUE
}ColorVal;其中各常量名代表的数值分别为:
GREEN 1
RED 2
BLUE 3
GREEN_RED 10
GREEN_BLUE 11枚举与#define宏的区别
#define宏常量是在预编译阶段进行替换。枚举常量则是在编译的时候确定其值。一般在编译器里可以调试枚举常量但不能调试宏常量。枚举可以一次定义大量相关常量而#define宏一次只能定义一个。
typedef-用于给数据类型取别名(当然还有其他作用)
typedef是给一个已经存在的数据类型注意是类型不是变量取一个别名而非定义一个新的数据类型。 在实际项目中为了方便可能很多数据类型尤其是结构体之类的自定义数据类型需要我们重新取一个适用实际情况的别名。这时候typedef就可以帮助我们。如
typedef struct student
{//code
}Stu_st,*Stu_pst;
//struct student stu1;和Stu_st stu1;没有区别
//struct student *stu2;和Stu_pst stu2;和Stu_st *stu2;没有区别