【问题标题】:Parse Error: Simple C Program解析错误:简单的 C 程序
【发布时间】:2012-04-29 21:52:44
【问题描述】:

我有以下简单的类代码,并且在 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;
    }
}

【问题讨论】:

  • 已被编辑以删除 Oli 指出的分号

标签: c parse-error


【解决方案1】:

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

#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;

如果您的#defines 中有=

【讨论】:

  • 你,我的朋友,是救命稻草!非常感谢!
【解决方案2】:

isUpperCase()isLowerCase() 在使用前未声明:在 simpleEncryption() 之前为每个添加声明,或将其定义移动到。

正如mu is too short 最初所述,宏定义不正确。要么修复宏,要么改用const int 变量:

static const int ALPHABET_LENGTH = 26;

【讨论】:

  • 谢谢,已经消除了类型不匹配错误,但我仍然有解析错误!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多