возникли проблемы с кодом в flex (часть в C) - PullRequest
2 голосов
/ 19 мая 2011

Когда я компилирую файл C, он говорит:

pcat.lex:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘hasTab’.

Вот начало файла:

#include "ctype.h"
#include "stdio.h"
#include "stdlib.h"
#include "pcat.tab.h"
#define YY_USER_ACTION Do_Before_Each_Action();
#define STRING_MAX_LENGTH 255
#define IDENTIFIER_MAX_LENGTH 255
#define MAX_INT 2147483647
static int lineno = 1;
static int colno = 1;
static bool hasTab;
void Do_Before_Each_Action();

Кто-нибудь знает, что происходит?
Я использую Mac OS X 10.6.7

Ответы [ 3 ]

1 голос
/ 19 мая 2011

bool не распознается как ключевое слово в языке C.

Вы можете либо попытаться использовать g++ для компиляции как C ++, либо попробовать определить bool как int вместе с константами для true и false. Например:

typedef int bool;
const bool  true = 1;
const bool false = 0;

bool a;

int main()
{
  bool a = true;
}

Компиляция работает отлично:

$ gcc test.c
$ # no errors
1 голос
/ 19 мая 2011

bool не является ключевым словом до C99.(На самом деле, это все еще только макрос в C99.)

0 голосов
/ 19 мая 2011

bool - это не C. Попробуйте вместо этого int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...