当前位置:首页 » 编程软件 » c条件编译

c条件编译

发布时间: 2022-01-08 09:38:57

c语言条件编译

#ifdef MAIN_REGS
#define _EXTERN //把_EXTERN定义为空,就是_EXTERN啥也不表示
#else
#define _EXTERN extern //把_EXTERN定义为extern
#endif

不定义MAIN_REGS的时候,_EXTERN被定义为关键字extern
下面程序就变成
extern volatile struct
{
enum _DispSt State;
u8 Time;}
sDisp;
extern 的定义,extern 表示一个声明,定义在其他地方
所以编译器认为你只是在声明一个变量,如果你没有额外在其他文件内定义sDisp
肯定是要报错了
extern的含义请参考http://ke..com/link?url=9EVDWx7LdQeWITokvsRzSCc_ouvquAo-

㈡ C语言中条件编译的实例

条件编译命令最常见的形式为:
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
其中#else部分也可以没有,即:
#ifdef
程序段1
#endif
这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上系统上运行,而不同的计算机又有一定的差异。例如,我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样往往需要对源程序作必要的修改,这就降低了程序的通用性。

㈢ c中条件编译的问题

嘿嘿!你的错误应该是这个constant expression require!

简单一点对你说,#if后面不可以接变量表达式!

因为条件编译就是根据你不同的条件来编译你程序中的不同部分!

所谓条件是指需要在计算机编译时确定的,但你一定有听老师讲过变量表达式

只是在程序执行时充当作用!

如果你将AMD改为常量表达式!程序一定没有错!

㈣ c语言中,什么是条件编译

条件编译属于三种宏定义中的一种,条件指示符的最主要目的是防止头文件的重复包含和编译,例如:一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误

条件编译常用的有四个预处理命令:#if、#else、#elif、#endif。
#if指令的形式为:
#if 常量表达式
代码块
#endif
#if后面的常量表达式为值,则编译它与#endif之间的代码,否则跳过这些代码。指令#endif标识一个#if块的结束。

#else被使用来标志#if的末尾和#else块的开始。这是必须的,因为任何#if仅有一个#endif与之关联。

#elif意指"else if",它形成一个if else if嵌套语句用于多种编译选择。#elif后面跟一个常量表达式,如果表达式是真,则编译其后的代码块,不对其他#elif表达式进行检测,否则顺序测试下一块。常见的形式如下:
形式1:
#ifdef 标识符
/*程序段 1*/
#else
/*程序段 2*/
#endif
它的作用是当标识符已经由#define定义过了,则编译程序段1,否则编译程序段2,也可以使用简单形式
#ifdef 标识符
/*程序段1*/
#endif

形式2:
#ifndef 标识符
#define 标识符
/*程序段 1*/
#else
/*程序段 2*/
#endif
它的作用是当标识符没有由#define定义过,则编译程序段1,否则编译程序段2 ,也可以使用简单形式
#ifndef 标识符
#define 标识符
/*程序段 1*/
# endif
形式3:
#if 表达式
/*程序段 1*/
#else
*程序段 2*/
# endif
它的作用是 当“表达式”值为真时编译程序段1。否则则编译程序段2,也可以使用简单形式
# if 表达式
/*程序段 1*/
# endif
形式4:
#if 表达式1
/*程序段 1*/
#elif 表达式2
/*程序段 2*/
............
#elif 表达式n
/*程序段n */
#endif
它的作用是当“表达式1”值为1时编译程序段1,表达式2的值为真是编译程序段2,否则依次顺序判断到表达式n。

最后,条件编译的条件是一个常量表达式,支持逻辑与&&和或||运算。以上四种形式的条件编译预处理结构都可以嵌套使用,
标识符: 在理论上来说可以是自由命名的,但每个头文件的这个标识符都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h。
#ifndef _STDIO_H_
#define _STDIO_H_
/*程序段 */
#endif

㈤ C语言中条件编译

#define 1显然是不行的。

你可以这么做:

#defineTEST1
#ifTEST
//test..
#else
//notest...
#endif

当判断#if 后面的表达式为真时,执行#if后的语句,否则执行#else后的语句

扩展:通常我们可以用#if 0来注释掉一个大的段落。

热点内容
如何安卓下光遇渠道服 发布:2025-04-27 00:07:23 浏览:967
androidactivity背景 发布:2025-04-27 00:05:40 浏览:246
24点的算法 发布:2025-04-27 00:03:32 浏览:637
免费java视频 发布:2025-04-26 23:48:47 浏览:304
艺术字脚本 发布:2025-04-26 23:46:23 浏览:830
java经典教程完整版 发布:2025-04-26 23:43:22 浏览:383
怎么给苹果短信加密 发布:2025-04-26 23:43:21 浏览:725
云与服务器安全bg什么意思 发布:2025-04-26 23:43:21 浏览:265
mc基岩版服务器搭建方法 发布:2025-04-26 23:43:10 浏览:368
现代名图车载大屏出厂密码是多少 发布:2025-04-26 23:42:28 浏览:495