Подтвердить что ты не робот

Error: неизвестный тип name 'bool

Я загрузил исходный код и хотел скомпилировать файл сканера. Он вызывает эту ошибку:

[[email protected] cs143-pp1]$ gcc -o lex.yy.o lex.yy.c -ll
In file included from scanner.l:15:0:
scanner.h:59:5: error: unknown type name ‘bool’
In file included from scanner.l:16:0:
utility.h:64:38: error: unknown type name ‘bool’
utility.h:74:1: error: unknown type name ‘bool’
In file included from scanner.l:17:0:
errors.h:16:18: fatal error: string: No such file or directory
compilation terminated.

И я попытался использовать другой компилятор для его компиляции, но появились разные ошибки.

[[email protected] cs143-pp1]$ g++ -o scan lex.yy.c -ll
/usr/bin/ld: cannot find -ll
collect2: ld returned 1 exit status

Мой os - 3.0-ARCH, я не знаю, почему это произошло. Как исправить ошибку?

4b9b3361

Ответ 1

C90 не поддерживает тип данных boolean.

C99 включает в себя:

#include <stdbool.h>

Ответ 2

C99 делает, если у вас

#include <stdbool.h> 

- Кейт Томпсон

Если компилятор не поддерживает C99, вы можете определить его самостоятельно:

// file : myboolean.h
#ifndef MYBOOLEAN_H
#define MYBOOLEAN_H

#define false 0
#define true 1
typedef int bool; // or #define bool int

#endif

Ответ 3

Просто добавьте следующее:

#define __USE_C99_MATH

#include <stdbool.h>

Ответ 4

Где-то в вашем коде есть строка #include <string>. Это само по себе говорит вам, что программа написана на С++. Поэтому использование g++ лучше, чем gcc.

Для отсутствующей библиотеки: вы должны посмотреть в файловой системе, если вы можете найти файл с именем libl.so. Используйте команду locate, попробуйте /usr/lib, /usr/local/lib, /opt/flex/lib или используйте грубую силу find / | grep /libl.

После того, как вы нашли файл, вам нужно добавить каталог в командную строку компилятора, например:

g++ -o scan lex.yy.c -L/opt/flex/lib -ll