Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

error: unknown type name ‘bool’

Tags:

c

gcc

lex

I downloaded the source code and wanted to compile the file of scanner. It produces this error:

[meepo@localhost 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. 

And I tried to use different complier to compile it, but it appeared different errors.

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

My os is 3.0-ARCH, I don't know why this happened. How do I fix the error?

like image 360
Meepo Avatar asked Nov 15 '11 07:11

Meepo


2 Answers

C90 does not support the boolean data type.

C99 does include it with this include:

#include <stdbool.h> 
like image 126
user978122 Avatar answered Sep 21 '22 13:09

user978122


C99 does, if you have

#include <stdbool.h>  

If the compiler does not support C99, you can define it yourself:

// file : myboolean.h #ifndef MYBOOLEAN_H #define MYBOOLEAN_H  #define false 0 #define true 1 typedef int bool; // or #define bool int  #endif 

(but note that this definition changes ABI for bool type so linking against external libraries which were compiled with properly defined bool may cause hard-to-diagnose runtime errors).

like image 35
Thomas Avatar answered Sep 21 '22 13:09

Thomas