读书人

#define,该怎么解决

发布时间: 2012-04-11 17:42:33 作者: rapoo

#define
#define XXX 可以作为开关语句,现在我遇到了这种情况:

#ifndef BBB
#define BBB
#endif

#define AAA
......
BBB AAA int function(stu*, stu*);

主要是BBB AAA int function(stu*, stu*)这一行看不懂,定义函数的话,前面加上这样一些“身份不明”的宏是干什么的?

[解决办法]
宏就是告诉编译器
例如 #define AA 1
如果代码中遇到AA标识符就用1来代替,
楼主能发完整代码吗,按照上面的定义 BBB AAA根本就相当于什么也没有

宏定义
具体是指用一个指定的标志符来进行简单的字符串替换或者进行阐述替换
[解决办法]
在预编译的时候宏会替换掉你所定义的数据,不论是数据类型还是数据大小。你可以把宏理解为等价替换。
[解决办法]
BBB AAA int function(stu*, stu*);

前面有对BBB AAA进行宏定义判断,如果BBB AAA都为1都时候才可以执行函数
[解决办法]
学习下……
[解决办法]
楼主再贴点相关的代码,楼上的很多都是没搞明白题目是什么都是在猜测,楼主首先要把问题描述清楚。
[解决办法]
其实作用就是在整个文件中都用1来代替AAA,这样如果你想要改变AAA只需要在这一个地方改变就行了!不用每一行去找AAA去改变那么多地方!
[解决办法]
其实就是条件编译和开关编译选项!
[解决办法]
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。

[解决办法]
#ifndef BBB
#define BBB
#endif

#define AAA
......
BBB AAA int function(stu*, stu*);

不用贴全部,通过这个就看明白了,既然LZ看不懂我的解释 我再说一遍

#ifndef BBB
#define BBB
#endif
当BBB被调用的时候 即BBB已为1 那下面再调用AAA的时候 同理 AAA为1 那么int function(stu*, stu*);
这个函数会被执行 所以说两个都为1的时候才会执行

这个在.H文件的调用经常使用的条件编译
[解决办法]
#ifndef BBB
#define BBB
#endif

#define AAA
......
BBB AAA int function(stu*, stu*);

为什么#define BBBB
BBB的值就变成1了
你的意思是#define BBBB 1 相当于#define BBBB
#ifndef BBB
#define BBB
#endif
上面3局的确是控制编译的问题
但是 在函数前加AAA BBB那不对吧

探讨
#ifndef BBB
#define BBB
#endif

#define AAA
......
BBB AAA int function(stu*, stu*);

不用贴全部,通过这个就看明白了,既然LZ看不懂我的解释 我再说一遍

#ifndef BBB
#define BBB
#endif
当BBB被调用的时候 即BBB已为1 ……

[解决办法]
预编译指令

读书人网 >C语言

热点推荐