有关宏的一些问题
来源:互联网 发布:唇语软件下载 编辑:程序博客网 时间:2024/06/05 03:19
今天在看linux 中tcphdr的数据结构的时候,发现struct里面可以使用#define,进而想到那些地方可以使用#define,其是否有作用域的问题?
#include<stdio.h>struct tcphdr{unsigned int param1;unsigned int parametor1:1;unsigned int parametor2:7;unsigned int parametor3:24;#define MAX 30};//#define MAX 40void *function1(void*arg){#define MAX 50 return NULL;}//void *function1(void *arg);int main(){ tcphdr m;function1((void*)&m);m.param1 = 20;m.parametor1 =1;m.parametor2 =40;m.parametor3 = 23243;int a = MAX;printf("%d\n", a);printf("%d, %d, %d \n", m.parametor1, m.parametor2, m.parametor3);return 0;}
其中a的输出为50是与之最近的MAX
将程序修改一下
#include<stdio.h>struct tcphdr{unsigned int param1;unsigned int parametor1:1;unsigned int parametor2:7;unsigned int parametor3:24;#define MAX 30};//#define MAX 40void *function1(void *arg);int main(){ tcphdr m;function1((void*)&m);m.param1 = 20;m.parametor1 =1;m.parametor2 =40;m.parametor3 = 23243;int a = MAX;printf("%d\n", a);printf("%d, %d, %d \n", m.parametor1, m.parametor2, m.parametor3);return 0;}void *function1(void*arg){#define MAX 50 return NULL;}
a的输出结果为30,是与之最近(在其前面的#define MAX 30),这样是否可以说明编译器在编译过程中是按由上而下进行处理,然后在替换的过程中,选择其最新的宏定义来替换?仍待发现...
- 有关宏的一些问题
- 有关初始化的一些问题
- 有关编码的一些问题
- Activity有关的一些问题
- 有关zipalign的一些问题
- 有关UICollectionviewController的一些问题
- 有关Linux的一些问题
- 有关做PM的一些问题
- 有关VS2005使用的一些基本问题.
- 有关“链接数据库”的一些问题
- 有关多线程的一些技术问题
- 有关多线程的一些技术问题
- 有关OpenCV的一些基础问题
- 有关内存管理的一些问题
- 有关视图状态(ViewState)的一些问题
- 有关股市的一些深层次问题
- 有关"SELECT FOR UPDATE"的一些问题
- 摘录一些有关Shader优化的问题
- go语言接口使用
- 经典C++面试题
- Solaris 操作流程
- PHP易混淆函数的区别
- vwe
- 有关宏的一些问题
- 第四章 运算符、表达式和语句
- jps命令使用
- 自定义定时器的一种方法
- CDH4 高可用集群指南
- asp.net中GridView全选后进行批量删除
- 日期时间进行比较日期的前后
- 获得局域网内IP地址和主机名
- 与文字相拥 舞尽人间芳华