Точка с запятой как символ в массиве символов C ++

Я пытаюсь создать массив символов, который содержит один символ на индекс массива с помощью следующего кода:

#ifndef TABLEDEFS_H
#define TABLEDEFS_H

#include <string>
using namespace std;

char symbolTable[] = {'_', '=', '<', '>', '!', '+', '-', '*', '/', '%', '.',
'(', ')', ',', '{', '}', ';', '[', ']', ':'};

string tokenTable[] = {"IDtk", "NUMtk", "==", "=<=", "=>=", "=", "<", ">", "!",
"+", "-",
"*", "/", "%", ".", "(", ")", ",", "{", "}", ";", "[", "]", ":", "EOFtk"};

string keywordTable[] = {"Start", "Stop", "Then", "If", "Iff", "While", "Var", "Int", "Float", "Do",
"Read", "Write", "Void", "Return", "Dummy", "Program"};
#endif

Тем не менее, мой компилятор продолжает жаловаться на наличие дополнительной точки с запятой. Я предполагаю, что это точка с запятой в моем массиве как завершающий символ, и я не уверен, как заставить это прекратить делать это.

Я хочу сохранить его как массив символов, а не строк, если смогу, потому что я использую массив как часть сканера для компилятора, который мы создаем в классе, и буду сравнивать отдельные символы из кода с массивом в некотором сложном заявлении переключателя. Как сделать мой массив менее расстраивающим для компилятора?

-3

Решение

Проблема не в том, где вы думаете. Следующая программа компилируется и работает просто отлично.

#include <stdio.h>

int main(void) {
char symbolTable[] = {'_', '=', '<', '>', '!', '+', '-', '*', \
'/', '%', '.', '(', ')',',', '{', '}', ';', '[', ']', ':'};
printf("%c\n", symbolTable[3]);
}

Я понимаю, что использую только C, а не C ++, но в данном случае это не должно иметь значения.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]