本文目录一览:
C语言宏定义条件编译问题
我觉得你可能是少打了一些字母 完整的程序如下 在我的编译器上试过 三个都是一样的
#includestdio.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");
}
#includestdio.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");
}
#includestdio.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语言宏定义 #define M 10 printf("%d",M++) 为什么错了
原因如下:
C程序编译的时候,先进行预处理,所以:
printf("%d", M++)经过预处理器处理后,就变成了:
printf("%d", 10++) 而10是一个字面常量,是无法进行自增操作的,这属于语法错误了。
预处理阶段主要是把宏定义语句进行简单的字符串替换,但是不做任何的运算。
C语言宏定义编译报错
你把struct student用括号括起来试试,即:
#define STU (struct student)