解析错误:简单的C程序

时间:2012-04-29 21:52:45

标签: c parse-error

我有一个类的以下简单代码,并且在if语句中从c = c ...开始的每一行都会得到一个解析错误。另外我收到以下错误:

警告:类型与先前的隐式声明不匹配。函数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;
    }
}

2 个答案:

答案 0 :(得分:8)

您的宏定义不应包含等号,您只需要这样:

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

预处理器相当简单,会盲目地将= 97替换为你的C来产生这样的破碎的东西:

c = c - = 97 + 1;

如果=中有#define

答案 1 :(得分:6)

isUpperCase()isLowerCase()在使用之前未声明:在simpleEncryption()之前为每个声明添加声明或将其定义移至。{/ p>

正如mu is too short所述,宏定义不正确。修复宏或改为使用const int变量:

static const int ALPHABET_LENGTH = 26;