当前位置:网站首页>C陷阱与缺陷 第6章 预处理器 6.4 宏并不是类型定义
C陷阱与缺陷 第6章 预处理器 6.4 宏并不是类型定义
2022-07-30 17:10:00 【weixin_客子光阴】
宏不是类型定义
宏的一个常见用途是,使多个不同变量的类型可在一个地方说明:
#define FOOTYPE struct foo
FOOTYPE a;
FOOTYPE b, c;
这样,编程人员只需在程序中改动一行代码,即可改变a,b,c的类型,而与a,b,c在程序的什么地方声明无关。
宏定义的这种用法有一个优点---可移植性,得到了所有C编译器的支持。
但是,我们最好还是使用类型定义:
typedef struct foo FOOTYPE;
这个语句为FOOTYPE为一个新的类型,与struct foo完全等效。
使用typedef的方式更通用一些。
#define T1 struct foo *
typedef struct foo *T2;
T1 a, b;
T2 c, d;
第一个声明被扩展为:
struct foo *a, b;
第二个声明被扩展为:
struct foo *c, *d;
边栏推荐
猜你喜欢

Tensorflow模型量化(Quantization)原理及其实现方法

一篇文 带你搞懂,虚拟内存、内存分页、分段、段页式内存管理(超详细)

从零开始的Multi-armed Bandit

LeetCode167:有序数组两数之和

KDD 2020 | 深入浅出优势特征蒸馏在淘宝推荐中的应用

《痞子衡嵌入式半月刊》 第 59 期

2022-07-30 Androd 进入深度休眠后把WIFI给关掉,唤醒之后重新打开WIFI
![[MRCTF2020]Ezaudit](/img/80/d4656abdff20703591ffdc3f5a5ebc.png)
[MRCTF2020]Ezaudit

Login Module Debugging - Getting Started with Software Debugging

论文阅读之《Quasi-Unsupervised Color Constancy 》
随机推荐
你是这样的volatile,出乎意料
Lotus 1.16.0 minimum snapshot export import
第5章 SQL高级处理
云厂商做生态需要“真连接、真赋能”,用“技术+真金实银”发展伙伴
Analysis and Simulation of Short Circuit Fault in Power System Based on MATLAB
Mongoose模块
FP6606CMP5 CPC-16L USB类型-C和PD充电控制器 百盛电子代理商
Is it reliable to work full-time in self-media?
Error occurred while trying to proxy request The project suddenly can't get up
Oracle动态监听与静态监听详解
WeChat applet picker scroll selector use detailed explanation
查询表中开始日期与结束日期
Microsoft Office 2019 软件下载安装详细教程!
MySql统计函数COUNT详解
Gvim order record
Redis缓存穿透-热点缓存并发重建-缓存与数据库双写不一致-缓存雪崩
JMeter Notes 4 | JMeter Interface Introduction
获得抖音商品详情 API
Lotus explodes the block failed
一篇文 带你搞懂,虚拟内存、内存分页、分段、段页式内存管理(超详细)