您的位置:

c语言宏定义编译报错,对一个c语言进行编译预处理时可检查宏定义的语法错误

本文目录一览:

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)