本文目錄一覽:
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)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/235676.html