C语言 宏定义
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 宏定义相关的知识,希望对你有一定的参考价值。
#define GCN_ICON PACKAGE_DATA_DIR "/" PACKAGE "/gcn.png"
这句是什么意思?具体的语法是什么?
#define 宏名 值
也就是把右边的那个值取个 名字。
比如你写的
#define GCN_ICON PACKAGE_DATA_DIR "/"
宏的名字叫GCN_ICON PACKAGE_DATA_DIR ,他的具体值是"/"。在程序编译时,凡是程序中出现GCN_ICON PACKAGE_DATA_DIR 的地方,都会替换成"/"。这样做的目的主要是为了维护程序的方便。比如,你想把"/"改成另一个值,那么在这里你只要把定义部分改过来就可以了,程序中是不需要修改的。如果不这样做,那么程序中的每个使用他的地方都需要修改,不止量很大,还容易出错。 参考技术A 楼上的两位说错了,宏的名字不是GCN_ICON PACKAGE_DATA_DIR,而是GCN_ICON
(注意:是#define 后面的,第一个空格前面的,字符串)
#include<stdio.h>
#define PACKAGE_DATA_DIR "package_dir"
#define PACKAGE "package"
#define GCN_ICON PACKAGE_DATA_DIR "/" PACKAGE "/gcn.png"
void main()
printf("%s\n",GCN_ICON);
输出:package_dir/package/gcn.png
我相信,你看了上面的程序,就明白了这个宏的意思了。本回答被提问者采纳 参考技术B 宏定义的格式就是
标识符 宏名 字符串也就是 #define 宏名 字符串
例子中
#define作为标识符是不变的
GCN_ICON PACKAGE_DATA_DIR是宏的名字 用户自定义
"/" PACKAGE "/gcn.png"是宏的字符串也就是内容,从形式上看是路径,根据需要用户自定义编写
C语言宏定义
对一个c语言进行编译预处理时,可检查宏定义的语法错误。为什么是错的
楼主看看书,仔细看看编译预处理都做了哪些事情。程序设计语言的预处理的概念:在编译之前进行的处理。 C语言的预处理主要有三个方面的内容: 1.宏定义; 2.文件包含; 3.条件编译。 预处理命令以符号“#”开头。
宏定义又称为宏代换、宏替换,简称“宏”。预处理制作单纯的宏展开,并不是检查语法错误,所说义是错误的。
语法错误都是编译阶段才检查的。预处理是不检查的。 参考技术A 宏定义又称为宏替换,c语言中的宏定义只是简单的字符串替换而已。
比如
define
n
1000
在程序中遇到n就自动把n替换成1000,n不是一个变量,不能赋值。
如果你写n=1;
相当于写1000=1;
这编译是通不过的,所以你使n的值改变是做不到的。
n只是一个要被替换的记号而已,连变量也不是。 参考技术B 你指的?:是三目运算符。那个就是比较大小,举个例子A>B?A:B,A>B成立整个式子的值就是A反之为B,这个你应该懂吧!若真是那些双目运算符你不懂,那就去好好重新在看遍书啊,那是基础中的基础
PR(x<y?x++:y++);/*这个是因为++的问题,++在后意思是先把值赋给x,然后在进行加1*/
PR(
y
);这行y不是等于2吗?
输出怎么是3
最后一行
PR(
y
);又得4。这是因为y有进行++计算 参考技术C 1.不需要加分号。
2.它和头文件是同一个意思,在程序预处理时处理。宏的作用就是防止出错,一改全改。不用在程序中逐一修改,降低错误。 参考技术D 贴图,不然谁知道为什么错的
以上是关于C语言 宏定义的主要内容,如果未能解决你的问题,请参考以下文章