本篇文章给大家谈谈c语言struct头文件,以及string头文件c语言对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C语言头文件中定义结构体的问题2、struct需要什么头文件3、怎样在C语言中用H头文件声明一个外部struct变量4、c语言,struct能只定义局部而不定义全局吗?还要定义好多struct方程…
C语言头文件中定义结构体的问题
C语言程序设计中,为防止头文件在同一编译单元被重复引用,常引入#ifndef宏来进行保护,如:头文件my_head.h
#ifndef _MY_HEAD_H_ //如果没有定义宏_MY_HEAD_H_
#define _MY_HEAD_H_ //则,定义该宏名
//以下是被保护的代码区
//进行相应的全局变量和结构体类型定义
typedef struct stu {
int a;
int b;
} STU ;
#endif //宏判断结束
这样,当整个代码中,多次引用这个my_head.h时,只有一次是生效的,系统编译时,如果检查宏_MY_HEAD_H_ 已经定义,就不会再进入被保护的代码区了。
PS: 宏名,一般是与头文件名相同,只是把字母全大写,前后加上下划线(_)
struct需要什么头文件
需要C语言或JAVA类、函数的头文件。
根据微软官方资料显示,struct是C语言或JAVA类、函数的头文件,被大量使用。
结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregatedatatype)的一类。
怎样在C语言中用H头文件声明一个外部struct变量
要定义一个struct变量,首先要定义一个结构体变量类型名 即struct 结构体名例如定义一个按键属性结构体(包含 是否有按键值更新(renew)和按键值(num)两个成员)struct Key_attribute{unsigned char renew;unsigned char num;};到此只是定义了一个类型名为 struct Key_attribute的结构体变量类型,仅仅是定义了一个类型而已,不生成代码,它的的属性和 int ,char,一样,只是一个类型说明。有了类型之后就可以像 int i;定义i为一个整型变量一样,利用刚刚声明过的结构体变量类型struct Key_attribute定义一个类型属性如struct Key_attribute(包含 两个unsigned char 无符号字符型变量 成员)的结构体变量了。如 struct Key_attribute Key; //就定义了Key 为一类型为struct attribute 的结构体变量 此时Key 就会产生代码,占用内存了。具体应用如下在KEY.H头文件中声明Key为一外部结构体变量#ifndef _KEY_H_#define _KEY_H_。。。。struct Key_attribute//定义一个名为 struct Key_attribute 的结构体类型。类型属性为包含两个无符号字符型变量成员{unsigned char renew;unsigned char num;};//到此就定义好 struct Key_attribute 类型了,只要C文件中包含 “KEY.H”就可以直接像用 int 定义变量一样,定义struct Key_attribute 类型的结构体变量了//如果 file1.c中包含 “KEY.H” 并定义了 struct Key_attributeKey;则只要在”KEY.H”文件中用一条外部变量声明 extern struct Key_attribute Key,其它文件只要包含”KEY.H”就可以对结构体变量Key进行操作了。extern struct Key_attribute Key; //声明变量Key 为一属性为struct Key_attribute的外部结构体变量,任何包含”KEY.H”都可以不用再次声明Key为外部变量而直接使用结构体变量Key了。//这样做的好处是,如果在头文件里面定义变量则编译器会为调用头文件里的同一变量的不同文件分配不同的存储空间,造成存储空间浪费。
c语言,struct能只定义局部而不定义全局吗?还要定义好多struct方程…
可以将struct定义在头文件里(header file 以.h为后缀名),在其他文件里面引用该头文件就可以。
例子如下在同一文件夹下创建两个文件point.h和test1.c:
/* point.h
* define the point struct
*/
typedef point{
int x;
int y;
}Point;
/* test1.c
* test the point struct
*/
#include stdio.h
#include “point.h” //你自己写的头文件
int main(){
Point p;
p.x = 3;
p.y = 4;
printf(“The point is(%d, %d)\n”, p.x, p.y);
return 0;
}
题外话,如果你想定义一个结构,可以继承,可以引用,你可以看看C++关于类的概念,C也可以实现,比较复杂
C++里面
可以这么写,定义类的数据,结构,成员函数等等
/[0] class cell
class PvCell{
//instance
int pos;
bool exist;
double cell_width;
double cell_length;
double distance_topcelledge;
double distance_bottemcelledge;
public:
//constructor;
PvCell();
PvCell (int p, bool e, double cl, double cw, double dt, double db);
//function
void setPos(int m){ pos = m;}
void setExist(bool b){exist = b;}
void setCellLength(double celll){cell_length = celll;}
void setCellWidth(double cellw){cell_width = cellw;}
void setDistanceTopCellEdge(double top ){distance_topcelledge = top;}
void setDistanceBottomCellEdge(double bot){distance_bottemcelledge = bot;}
int getPos(void){return pos;}
bool getExist(void){return exist;}
double getCellLength(void){return cell_length;}
double getCellWidth(void){return cell_width;}
double getDistanceTopCellEdge(void){return distance_topcelledge;}
double getDistanceBottomCellEdge(void){return distance_bottemcelledge;}
void print() const;
void copycellfrom(PvCell sourceCell);
void copycellto(PvCell targetCell);
};
//[0]
关于c语言struct头文件和string头文件c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。