宏条件编译
⑴ C语言宏定义 用条件编译
条件编译以及所有前面带“#”的语句,是在编译阶段执行的语句,不会生成运行时的代码。而你的y是在运行时才进行赋值的,所以是无法用条件编译来实现的。
直接写成条件语句就行:
{
if R
printf("%d是闰年\n",y);
else
printf("%d不是闰年\n",y);
}
⑵ C语言中的条件编译 #if define(宏名称)为什么错误了
预编译指令格式错误。
#if define (IBMPC)应改为#ifdef IBMPC
这种结构是为了防止头文件嵌套包含。一般的用法是
#ifndef _IBMPC_H
#define _IBMPC_H
#include"ibmpc.h"
....
#endif
⑶ C语言宏定义条件编译问题2
#include<stdio.h>
#define DEBUG
int main()
{
int x=1,y=2,z=3;
#ifdef DEBUG
printf("%d,%d,%d\n",x,y,z);
#endif
return 0;
}
你先试试这个这个程序看看有没有输出,然后再把#define DEBUG删掉重新运行程序看看。
⑷ C语言:条件编译的标识符不能放在程序里面宏定义吗
定义是可以的,叫做条件编译。
在再前面,加一个语句
#define
BZ
编译的时候,就会编译“程序1”,而不编译“程序2”;
如果前面,以及include的文件里面都没有BZ的定义,编译时,就不会编译“程序1”,而是编译“程序2”
if
else
就错了。
#ifdef
BZ,仅仅是说BZ已经定义,与其值没有任何关系,你让他=0,=别的什么,不会影响#ifdef的行为。
条件编译是编译时的选项,与运行时无关,你不能在运行时做什么选择。
从if语句看,你的条件是a=1,不是BZ是否定义。
⑸ 宏定义里面不能再包含条件编译语句吗
不可以
宏定义要求必须写在一行
而条件编译必须是独立一行。
这两个本身就是矛盾的
要条件编译加宏定义, 只能是条件编译在外层,宏定义在内层
比如
#include<stdio.h>
#ifdefTEST
#defineVALUE0
#else
#defineVALUE1
#endif
intmain()
{
printf("%d ",VALUE);
}
⑹ C语言宏定义条件编译问题
我觉得你可能是少打了一些字母 完整的程序如下 在我的编译器上试过 三个都是一样的
#include<stdio.h>
#define LETTER 1
void main()
{
char str[20]="C Language",c;
int i=0;
while((c=str[i])!='\0')
{
i++;
#ifndef LETTER
if(c>='a'&&c<='z')
c=c+32;
#else
if(c>='a'&&c<='z') //此处少了一个if
c=c-32;
#endif
printf("%c",c);
}
printf("\n");
}
#include<stdio.h>
#define LETTER 1
void main()
{
char str[20]="C Language",c;
int i=0;
while((c=str[i])!='\0')
{
i++;
#ifdef LETTER //你在此处打的是if,此处打错了
if(c>='a'&&c<='z')
c=c-32;
#else
if(c>='a'&&c<='z')
c=c+32;
#endif
printf("%c",c);
}
printf("\n");
}
#include<stdio.h>
#define LETTER 1
void main()
{
char str[20]="C Language",c;
int i=0;
while((c=str[i])!='\0')
{
i++;
#ifdef LETTER
if(c>='a'&&c<='z')
c=c-32;
#else
if(c>='a'&&c<='z') //此处少了一个if
c=c+32;
#endif
printf("%c",c);
}
printf("\n");
}
⑺ C语言中宏定义、文件包含、条件编译都不是C语言的语句吗
这些都是预处理指令,会在编译前由预处理器统一处理,正式编译的时候,编译器看不到这些内容,编译器也不知道要怎样处理它们。
C语言的语句是以分号结尾的,这些一般不以分号结尾,不能算语句。
⑻ 宏函数里能包含条件编译吗
这个跟你是一样的。
http://bbs.csdn.net/topics/90157313
还是用其他方法解决吧
⑼ “C语言的预处理 不能实现宏定义和条件编译的功能”和“C语言的预处理不能实现宏定义和条件编译的功能”
这两句话是一个意思, C语言中的预处理,是可以实现宏定义和条件编译功能的。比如下面的代码定义了一个宏S,它的值是”hello world ",可以用printf函数直接打印出来。
#include<stdio.h>
#defineS"helloworld "
intmain()
{
printf(S);
return0;
}
C语言中的预处理也可以实现条件编译功能,预处理到现在依然存在的一个重要原因就在于此。比如下面的代码:
#include<stdio.h>
intmain()
{
#ifdef_DEBUG
printf("程序生成的debug版 ");
#else
printf("程序生成的是release版 ");
#endif
return0;
}
⑽ 如何在makefile中定义宏进行条件编译
你可以借助BASHSHELL强大的字符串处理能力来实现啊!
比如你可以将你想定义的“宏”放在makefile.include中,然后将其赋值,而在makefile中加入include makefile.include一行,在其后需要进行条件预编译时进行字符串比较来实现啊!