c त्रुटि: अज्ञात प्रकार का नाम 'बूल'




gcc lex (4)

बस निम्नलिखित जोड़ें:

#define __USE_C99_MATH

#include <stdbool.h>

मैंने सोर्स कोड डाउनलोड किया और स्कैनर की फाइल संकलित करना चाहता था। यह इस त्रुटि का उत्पादन करता है:

[[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

मेरा ओएस 3.0-आर्क है, मुझे नहीं पता कि यह क्यों हुआ। मैं त्रुटि को कैसे ठीक करूं?


आपके कोड में कहीं भी एक पंक्ति #include <string> । यह स्वयं ही आपको बताता है कि कार्यक्रम सी ++ में लिखा गया है। तो g++ का उपयोग gcc से बेहतर है।

लापता लाइब्रेरी के लिए: यदि आपको libl.so नामक फ़ाइल मिल सकती है तो आपको फ़ाइल सिस्टम में चारों ओर देखना चाहिए। locate कमांड का प्रयोग करें, कोशिश करें /usr/lib , /usr/local/lib , /opt/flex/lib , या ब्रूट-फोर्स find / | grep /libl find / | grep /libl

एक बार जब आपको फ़ाइल मिल जाए, तो आपको निर्देशिका को कंपाइलर कमांड लाइन में जोड़ना होगा, उदाहरण के लिए:

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

यदि आपके पास है, तो सी 99 करता है

#include <stdbool.h> 

यदि संकलक सी 99 का समर्थन नहीं करता है, तो आप इसे स्वयं परिभाषित कर सकते हैं:

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

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

#endif

(लेकिन ध्यान दें कि यह परिभाषा ABI को bool प्रकार के लिए बदलती है ताकि बाह्य पुस्तकालयों के खिलाफ लिंक किया जा सके जो उचित रूप से परिभाषित bool साथ संकलित किए गए थे, रनटाइम त्रुटियों को मुश्किल से निदान कर सकते हैं)।


C90 बुलियन डेटा प्रकार का समर्थन नहीं करता है।

सी 99 में इसमें शामिल है इसमें शामिल हैं:

#include <stdbool.h>