C中数组中的关键字

keywords in array in C

我在将关键字放入数组时遇到问题。这是我的数组:

char keywords [] = {'auto', 'break', 'case', 'char', 'continue', 'do', 'default', 'const', 'double', 'else', 'enum', 'extern', 'for', 'if', 'goto', 'float', 'int', 'long', 'register', 'return', 'signed', 'static', 'sizeof', 'short', 'struct', 'switch', 'typedef', 'union', 'void', 'while', 'volatile', 'unsigned'};

但是每当我 运行 我的程序时,我总是得到

警告:隐式常量溢出
覆盖 [-Woverflow]

错误。

有谁知道这个错误是什么意思,或者我如何才能成功地将 C 关键字放入数组中?

您不使用单引号 ' 来分隔 c 中的字符串,为此您需要双引号 ".

你需要一个指针数组,所以你的声明应该是char *keywords[]

const char *keywords[] = {
    "auto", 
    "break", 
    "case", 
    "char", 
    "continue", 
    "do", 
    "default", 
    "const", 
    "double", 
    "else", 
    "enum", 
    "extern", 
    "for", 
    "if", 
    "goto", 
    "float", 
    "int", 
    "long", 
    "register", 
    "return", 
    "signed", 
    "static", 
    "sizeof", 
    "short", 
    "struct", 
    "switch", 
    "typedef", 
    "union", 
    "void", 
    "while", 
    "volatile", 
    "unsigned"
};

单引号用于字符常量,并且存在 多字符 字符常量,但那些是实现定义的,单个字符 字符常量 like 'a' 给出一个整数值,它是该字符的ascii码。

看来您正在尝试编写解析器,您是否考虑过使用 bison + flex 或任何其他解析器生成器?