A. 宏定义里面不能再包含条件编译语句吗
不可以
宏定义要求必须写在一行
而条件编译必须是独立一行。
这两个本身就是矛盾的
要条件编译加宏定义, 只能是条件编译在外层,宏定义在内层
比如
#include<stdio.h>
#ifdefTEST
#defineVALUE0
#else
#defineVALUE1
#endif
intmain()
{
printf("%d ",VALUE);
}
B. 宏函数里能包含条件编译吗
这个跟你是一样的。
http://bbs.csdn.net/topics/90157313
还是用其他方法解决吧
C. 条件编译--标识符和宏标识符的问题
没什么区别,本质是一样的
第二种应该是这样的,你写错了
#ifndef 宏标识符
程序段1
#else
程序段2
#endif
D. C语言中的条件编译 #if define(宏名称)为什么错误了
预编译指令格式错误。
#if define (IBMPC)应改为#ifdef IBMPC
这种结构是为了防止头文件嵌套包含。一般的用法是
#ifndef _IBMPC_H
#define _IBMPC_H
#include"ibmpc.h"
....
#endif
E. “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;
}
F. C语言宏定义 用条件编译
条件编译以及所有前面带“#”的语句,是在编译阶段执行的语句,不会生成运行时的代码。而你的y是在运行时才进行赋值的,所以是无法用条件编译来实现的。
直接写成条件语句就行:
{
if R
printf("%d是闰年\n",y);
else
printf("%d不是闰年\n",y);
}
G. C语言中的条件编译宏有哪些可以改进的方法
#include #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删掉重新运行程序看看。
H. C语言:条件编译的标识符不能放在程序里面宏定义吗
定义是可以的,叫做条件编译。
在再前面,加一个语句
#define
BZ
编译的时候,就会编译“程序1”,而不编译“程序2”;
如果前面,以及include的文件里面都没有BZ的定义,编译时,就不会编译“程序1”,而是编译“程序2”
if
else
就错了。
#ifdef
BZ,仅仅是说BZ已经定义,与其值没有任何关系,你让他=0,=别的什么,不会影响#ifdef的行为。
条件编译是编译时的选项,与运行时无关,你不能在运行时做什么选择。
从if语句看,你的条件是a=1,不是BZ是否定义。
I. 如何在makefile中定义宏进行条件编译
你可以借助BASHSHELL强大的字符串处理能力来实现啊!
比如你可以将你想定义的“宏”放在makefile.include中,然后将其赋值,而在makefile中加入include makefile.include一行,在其后需要进行条件预编译时进行字符串比较来实现啊!