1

c = c ...クラスに次の簡単なコードがあり、ifステートメントで始まる各行の解析エラーが発生しています。さらに、次のエラーが発生します。

警告:以前の暗黙の宣言との型の不一致。関数isUpperCaseでのisUpperCaseの以前の暗黙の宣言:'='トークンの前にエラーを解析します。そして、isLowerCaseの同様のエラー。

誰かが何か洞察を持っていますか?

#include<stdio.h>
#include<string.h>

#define LOWERCASE_START = 97
#define LOWERCASE_END = 122
#define UPPERCASE_START = 65
#define UPPERCASE_END = 90
#define ALPHABET_LENGTH = 26

void simpleEncryption(char s[]){
    int i;
    for (i=0; i < strlen(s); i++){
        char c = s[i];
        if (isUpperCase(c) == 1){
            c = c - UPPERCASE_START + 1;
            c = c % ALPHABET_LENGTH;
            c = c + UPPERCASE_START;
        } else if (isLowerCase(c) == 1){
            c = c - LOWERCASE_START + 1;
            c = c % ALPHABET_LENGTH;
            c = c + LOWERCASE_START;
        }
        s[i]=c;
    }
}

int isUpperCase(char c) {
    if (c >= UPPERCASE_START && c <= UPPERCASE_END) {
        return 1;   
    } else {
        return 0;
    }
}

int isLowerCase(char c) {
    if (c >= LOWERCASE_START && c <= LOWERCASE_END) {
        return 1;   
    } else {
        return 0;
    }
}
4

2 に答える 2

8

マクロ定義に等号を含めることはできません。必要なのは次のとおりです。

#define LOWERCASE_START 97
#define LOWERCASE_END 122
#define UPPERCASE_START 65
#define UPPERCASE_END 90
#define ALPHABET_LENGTH 26

プリプロセッサはかなり単純なものであり、Cに盲目的に置き換え= 97て、次のような壊れたものを生成します。

c = c - = 97 + 1;

あなたがあなた=のに持っている場合#define

于 2012-04-29T21:57:17.643 に答える
6

isUpperCase()およびisLowerCase()は、使用される前に宣言されません。それぞれに宣言を追加するか、の前に定義を移動しますsimpleEncryption()

muが最初に述べたように、マクロの定義が短すぎます。マクロを修正するか、const int代わりに変数を使用してください。

static const int ALPHABET_LENGTH = 26;
于 2012-04-29T21:56:05.673 に答える