‘壹’ C语言宏定义 用条件编译
条件编译以及所有前面带“#”的语句,是在编译阶段执行的语句,不会生成运行时的代码。而你的y是在运行时才进行赋值的,所以是无法用条件编译来实现的。
直接写成条件语句就行:
{
if R
printf("%d是闰年\n",y);
else
printf("%d不是闰年\n",y);
}
‘贰’ c语言中怎么用命令提示窗口编译宏定义并打印出来!请指教.谢谢了.
安装 Visual Studio 后在开始菜单里找 Microsoft Visual C++ 命令提示符,打开后,用微软的编译器 cl 编译,不是 cpp。
‘叁’ 如何在C语言中用宏来判断当前编译器
1、_MSC_VER 是微软C/C++编译器——cl.exe 编译代码时预定义的一个宏。需
要针对cl 编写代码时, 可以使用该宏进行条件编译。
2、_MSC_VER 的值表示cl 的版本。需要针对cl 特定版本编写代码时, 也可以使用
该宏进行条件编译。
3、_MSC_VER 的类型是"int",具体版本号定义如下:
MS VC++ 9.0 _MSC_VER = 1500
MS VC++ 8.0 _MSC_VER = 1400
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100
其中MS VC++ 9.0 就是Visual C++ 2008,MS VC++ 8.0 就是Visual C++2005。
二、介绍预定义宏“__GNUC__”
1、__GNUC__ 是gcc 编译器编译代码时预定义的一个宏。需要针对gcc 编写代码时,
可以使用该宏进行条件编译。
2、__GNUC__ 的值表示gcc 的版本。需要针对gcc 特定版本编写代码时,也可以使
用该宏进行条件编译。
3、__GNUC__ 的类型是“int”
三、预定义宏"__MINGW32__"
1、MinGW编译器
四、symbian sdk 预定义宏:
symbian 平台,定义"__SYMBIAN32_"
3rd MR 版及之前的那个3rd 版本,定义"__SERIES60_30__"
3rd FP1 版,定义"__SERIES60_31__"
3rd FP2 版,定义"__SERIES60_32__"
另外,还有一个"__SERIES60_3x__"。若不需区分具体是哪一个3rd 版,则用之。
‘肆’ C语言 宏
难道3不能是字符串吗?
"3*pi"是字符串,"3"是它的子串。
"3*pi"宏展开后为"3*3.1415926"也是字符串,整个源程序都被认为字符串!
现在,还有有编译,编译时,编译器会把3*3.1415926当表达式计算,用结果再替换一次!
‘伍’ C语言宏定义编译报错
你把struct student用括号括起来试试,即:
#define STU (struct student)
‘陆’ C语言##宏的使用问题
#define PORT P1
#define zhantie(x,y) x##y
#define zaizhan(x,y) zhantie(x,y)
#define POUT zaizhan(PORT,OUT)
‘柒’ c语言宏的使用问题
这个宏定义一个函数 S(r) ,其中 :
函数名:S
参数:r
函数内容: r*r
使用 S(a+b) , 就是把函数 S(r) 的函数内容中的参数 r, 用 a+b 替换,得到:a+b*a+b 。
因此, area=S(a+b) = a+b*a+b 。
其实这个例子是用来说明宏定义容易【出错的】!函数 S 的本来目的是用来求平方的,
现在达不到预期的目的。正确的宏定义是:
#define S(r) (r)*(r)
‘捌’ 用c语言定义一个宏
这个要用到 三木运算,这样代码简洁
#define INPUT_X_Y(x,y) ((x) * (y) < 100 )? (result = 1 ): (result = 0);
调用的时候输入x 和 y 的值 ((x) * (y) < 100 )? (result = 1 ): (result = 0); 就是运算的式子 第一个表达式如果成立 执行?后面的 如果不成立 执行:后面的
最后如果有需要的话printf一下就行了
‘玖’ C语言的编译系统对宏命令的处理
前言:宏实质就是编译器在对代码进行编译之前进行的一个“查找替换”工作,就跟你在处理文档时用WPS/WORD/记事本等进行“查找替换”操作一样。
C语言的编译系统对宏命令的处理是()
A。在程序运行时进行的
B。在对源程序中其他成分正式编译之前进行的
C。在程序连续时进行的
D。和C程序中的其他语句同时进行编译
答:选B。在对源程序中其他成分正式编译之前进行的
2,
#define N 2 /* 在预编译时将用下面代码中N替换成2 */
#define M N+1 /* 在预编译时将M替换成N+1(即2+1,N会再被替换成2)*/
#define NUM 2*M+1 /* 如上:在预编译时NUM替换成2*M+1,即2*N+1+1,即2*2+1+1*/
main()
{int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
/*
* 如上所述,上句展开为:for(i=1;i<=2*2+1+1;i++)printf("%d\n",i);
* 所以:循环将执行6次
*/
}
/* 切记注意:每一个宏百进行替换时只是替换“正文”中的内容,而不包括预编译语句的内容, 否则就会像不少人理解的那样,错误地认为第2个题中的循环将执行7次 */
‘拾’ c语言宏定义如何用用宏定义有什么优点
用#define 来定义,如#define Max 100
优点:在以后的程序中 要修改Max的大小 不用跑到程序中找 直接修改
#define Max 的大小即可。很方便。