Я пытаюсь создать массив символов, который содержит один символ на индекс массива с помощью следующего кода:
#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
Тем не менее, мой компилятор продолжает жаловаться на наличие дополнительной точки с запятой. Я предполагаю, что это точка с запятой в моем массиве как завершающий символ, и я не уверен, как заставить это прекратить делать это.
Я хочу сохранить его как массив символов, а не строк, если смогу, потому что я использую массив как часть сканера для компилятора, который мы создаем в классе, и буду сравнивать отдельные символы из кода с массивом в некотором сложном заявлении переключателя. Как сделать мой массив менее расстраивающим для компилятора?
Проблема не в том, где вы думаете. Следующая программа компилируется и работает просто отлично.
#include <stdio.h>
int main(void) {
char symbolTable[] = {'_', '=', '<', '>', '!', '+', '-', '*', \
'/', '%', '.', '(', ')',',', '{', '}', ';', '[', ']', ':'};
printf("%c\n", symbolTable[3]);
}
Я понимаю, что использую только C, а не C ++, но в данном случае это не должно иметь значения.
Других решений пока нет …