C语言宏定义名可以有括号和分号吗?
宏定义的名称,是C语言标识符的一种,和函数名,变量名的命名规则是一样的,只允许使用数字,字母,下划线,且不能以数字开头。
所以宏名是不可以有括号和分号的。
另外,在C语言编程中,一般约定宏名用大写字母加下划线组成,而避免使用小写字母。这一条并非是C语言规范强制要求,而是编程时的一种习惯。
为什么C语言宏定义总是编译出错?求大神指教?软件设置问题?
解答:如果不确定编译器设置是否正确,可以把代码粘贴到在线IDE(例如ideone)上去编译、运行,查看出错信息。
两点建议:编程问题建议去相关论坛发帖子,比如stackoverflow或者csdn;讨论具体的编程问题,一定要附上代码。
请问C语言中宏定义怎么用
宏定义就好像是WORD中的“全部替换”一样,只不过这个替换是在将源程序在系统“编译”时执行的。
#define sub(a,b) ((a)-(b))
源程序中若有
x=sub(200-1,100+10);
会被编译为:
x=((200-1)-(100+10));
即x被赋值为89
如果#define sub(a,b) a-b的话
x=sub(200-1,100+10);
就变成x=200-1-100+10;
x会被赋值为109
c语言关于宏定义、函数
宏定义的基础知识。引用宏定义时,直接代入进行代换。
既然已经宏定义SUB(a) (a)-(a),而程序中出现的对应a的是a+b,那么就将a换为a+b代入表达式:
d=SUB(a+b)*c=(a+b)-(a+b)*c=(2+3)-(2+3)*5
直接用(a+b)-(a+b)代换SUB(a+b)。这一点和数学是不同的,不要强行往数学上靠。c语言的字符是用ascii码表示的。每一个字符对应一个整数。同样的,每一个整数也对应一个字符。a~z对应66~90。a~z对应97~122的数。ch大于a小于z时让它 a-a,正好可以把它的ascii码变为a~z区间内的整数。