‘CHAR_WIDTH’ undeclared
जब मैं इस सरल कार्यक्रम को संकलित करने का प्रयास करता हूं तो मुझे त्रुटि मिलती है
:
#include <stdio.h>
#include <limits.h>
int main()
{
printf("CHAR_BIT = %d\n", CHAR_BIT);
printf("CHAR_WIDTH = %d\n", CHAR_WIDTH);
return (0);
}
साथ में
gcc ./show_char_width.c -o show_char_width
और gcc: GNU C17 (Ubuntu 8.3.0-6ubuntu1) संस्करण 8.3.0 (x86_64-linux-gnu) GNU C संस्करण 8.3.0, GMP संस्करण 6.1.2, MPFR संस्करण 4.0.2, MPF संस्करण 1.1.0 द्वारा संकलित , isl संस्करण isl-0.20-GMP, कर्नेल: 5.0.0-37-जेनेरिक।
जैसा कि यहाँ कहा गया है CHAR_WIDTH को सीमा में परिभाषित किया जाना चाहिए। यह मेरे कार्यक्रम में शामिल है। तो मुझे यह त्रुटि क्यों मिली?
-v
विकल्प के साथ मैंने पाया कि पुस्तकालय उन निर्देशिकाओं में खोजा जाएगा:
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
/ usr / lib / gcc / x86_64-linux-gnu / 8 / शामिल-फिक्स्ड में एक सीमाएँ होती हैं। इनमें syslimits.h शामिल होता है, जो उसी dir से होता है, जिसमें अगली सीमाएँ शामिल होती हैं ।h, कि आपकी समझ से स्थित होना चाहिए / usr / निर्देशिका शामिल है।
CHAR_WIDTH मैक्रो वास्तव में उन फ़ाइलों में परिभाषित है, लेकिन कुछ शर्तों के तहत जो मेरे वास्तविक ज्ञान से अधिक है।
मैंने अब तक जिन स्थितियों को पाया, वे हैं:
/* The integer width macros are not defined by GCC's <limits.h> before
GCC 7, or if _GNU_SOURCE rather than
__STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. */
#if __GLIBC_USE (IEC_60559_BFP_EXT)
# ifndef CHAR_WIDTH
# define CHAR_WIDTH 8
# endif
तथा :
#ifdef __STDC_WANT_IEC_60559_BFP_EXT__
/* TS 18661-1 widths of integer types. */
# undef CHAR_WIDTH
# define CHAR_WIDTH __SCHAR_WIDTH__
इसलिए मुझे आपकी मदद चाहिए।
नोट: मुझे A.5.1 में वर्णित अन्य सभी मैक्रोज़ के साथ एक ही त्रुटि मिलती है: SCHAR_WIDTH, INT_WIDTH, LONG_WIDTH, आदि।
__STDC_WANT_IEC_60559_BFP_EXT__
कमांड लाइन द्वारा इसे परिभाषित या पास करना
CHAR_BIT
8 होना चाहिए, जिसका मतलब CHAR_WIDTH
POSIX सिस्टम पर 8 होना चाहिए।
#define
पहले किया था #include
?