C语言
文章平均质量分 68
带皮吃榴莲
这个作者很懒,什么都没留下…
展开
-
enum关键字用法-仅自学习
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。(2)DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。在当前值没有赋值的情况下,枚举类型的当前值总是前一个值+1.(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5) 枚举型是预处理指令#define的替代。(6) 类型定义以分号;结束。转载 2024-05-24 15:11:19 · 53 阅读 · 1 评论 -
#pragma pack(n) 和#pragma pack()
C编译器在编译时为了提高代码的运行效率,会对结构体进行优化,成员变量按照4字节进行对齐,对于int、short、long等类型,在结构体空间中以偶数地址为起始开始存放,且一次性连续存放完。此时编译运行之后stru_test1所占字节大小和stru_test2所占字节大小一样,都是7个字节。#pragma pack(n) 和#pragma pack() 强制C编译器以n字节进行对其,那么上面代码在进行编译运行之后,stru_test1和stru_test2所占字节的大小为多少呢?原创 2023-07-02 11:16:57 · 182 阅读 · 1 评论 -
C语言中关键字volatile的含义及用法
上例程序在正常运行的时候确实是好事,但是总会有一些特殊的情况发生,比如,一个中断程序突然改变了valu_1的值为5,那么可能会发生这样的情况:本来valu_1、valu_2和valu_3应该是valu_1改变以后的值5,可是因为编译器在编译时优化valu_1,valu_2,valu_3都是10,因此即使在别的地方被改变成5,但在主函数中使用valu_1、valu_2和valu_3时,其值还是10而不是5,这样程序就会跑出来我们意想不到的结果。,用它声明的类型变量表示可以被某些编译器未知的因素更改。原创 2023-06-23 19:40:06 · 3509 阅读 · 2 评论 -
头文件重复包含问题解决办法
原因是编译器编译也是有先后顺序的,如果是先编译test1.c然后再编译test2.c,在编译test1.c时将header.h引入并定义,然后在编译test2.c又将header.h引入并定义,此时就出现header.h被重复引入了,编译器就会报错。注意:上面代码中 “_HEADER_H_” 宏名要避免和程序中的宏明重复,如果程序中有使用“_HEADER_H_” 这个宏名的,编译也会出问题。举例现在一个工程中有两个.c文件,分别为test1.c和test2.c,还有一个.h文件header.h。原创 2024-05-24 14:58:19 · 459 阅读 · 1 评论