数字常量之前的预期标识符

Posted

技术标签:

【中文标题】数字常量之前的预期标识符【英文标题】:expected identifier before numeric constant 【发布时间】:2018-03-05 04:44:18 【问题描述】:

我将此代码用作 DFA 确定性有限自动机,它接受甚至输入 1 或 0

#include <stdio.h> 

#define TOTAL_STATES 2
#define FINAL_STATES 1
#define ALPHABET_CHARCTERS 2
#define UNKNOWN_SYMBOL_ERR 0
#define NOT_REACHED_FINAL_STATE 1
#define REACHED_FINAL_STATE 2
enum DFA_STATESq0,q1,q2,q3;
enum input0,1;
int Accepted_states[FINAL_STATES]=q0;
char alphabet[ALPHABET_CHARCTERS]='0','1';
int Transition_Table[TOTAL_STATES][ALPHABET_CHARCTERS];
int Current_state=q0;
void DefineDFA()

    Transition_Table[q0][0] = q3;
    Transition_Table[q0][1] = q1;
    Transition_Table[q1][0] = q2;
    Transition_Table[q1][1] = q0;
    Transition_Table[q2][0] = q1;
    Transition_Table[q2][1] = q3;
    Transition_Table[q3][0] = q0;
    Transition_Table[q3][1] = q2;


int DFA(char current_symbol)

int i,pos;
    for(pos=0;pos<ALPHABET_CHARCTERS; pos++)
        if(current_symbol==alphabet[pos])   
            break;//stops if any character other than a or b
    if(pos==ALPHABET_CHARCTERS)
         return UNKNOWN_SYMBOL_ERR;
    for(i=0;i<FINAL_STATES;i++)
 if((Current_state=Transition_Table[Current_state][pos])
==Accepted_states[i])
            return REACHED_FINAL_STATE;
    return NOT_REACHED_FINAL_STATE;

int main(void)

    char current_symbol;
    int result;

    DefineDFA();    //Fill transition table

    printf("Enter a string with 'a' s and 'b's:\n Press Enter Key to stop\n");


    while((current_symbol=getchar())!= '\n')
        if((result= DFA(current_symbol))==UNKNOWN_SYMBOL_ERR)
            break;
    switch (result) 
    case UNKNOWN_SYMBOL_ERR:printf("Unknown Symbol %c",
  current_symbol); 
 break;
    case NOT_REACHED_FINAL_STATE:printf("Not accepted"); break;
    case REACHED_FINAL_STATE:printf("Accepted");break;
    default: printf("Unknown Error");
    
    printf("\n\n\n");
    return 0;

我收到此错误 10:15:错误: 10:15:错误:数字常量之前的预期'' 10:15:错误:数字常量之前的预期 unqualified-id 10:18:错误:''标记之前的预期声明

【问题讨论】:

您是否尝试使用其他名称? 【参考方案1】:

枚举项必须是名称而不是值

enum inputAAA,BBB;

enum inputAAA=0,BBB;

enum inputAAA=0,BBB=1;

【讨论】:

【参考方案2】:

您的线路:

enum input0,1;

使用整数作为枚举值。这是不允许的。比如:

enum input n0, n1;

没问题。使用枚举的全部意义在于可以使用描述性标题代替数字。

【讨论】:

以上是关于数字常量之前的预期标识符的主要内容,如果未能解决你的问题,请参考以下文章

Java常量与变量

标识符关键字变量常量

java-关键字标识符常量

错误:数字常量之前的预期';',','或')[关闭]

Java语言基础——数据类型与运算符

java基础