.\" $NetBSD$ .\" .\" Copyright (c) by Aleksey Cheusov (vle@gmx.net) .\" Absolutely no warranty. .\" .\" ------------------------------------------------------------------ .de VS \" Verbatim Start .ft CW .nf .ne \\$1 .. .de VE \" Verbatim End .ft R .fi .. .\" ------------------------------------------------------------------ .TH MKC_CHECK_DECL 1 "Dec 2, 2023" "" "" .SH "نام (NAME)" mkc_check_decl \- بررسی وجود define، متغیر، تابع، نوع داده، عضو ساختار یا پیش‌نمونهٔ تابع .SH "خلاصه دستور (SYNOPSIS)" .BI mkc_check_decl " [OPTIONS] [headers...]" .SH "توضیحات (DESCRIPTION)" آرگومان .I check_type یکی از مقادیر .IR " define" "، " "variable" "، " "func[0-9]" "، " "funcordefine[0-9]" "، " "type" "، " "member " یا .IR " prototype" است. بسته به مقدار آن، .B mkc_check_decl به‌ترتیب وجود یک define، متغیر، تابع با تعداد مشخص‌شده‌ای از آرگومان‌ها (یا define معادل در صورت استفاده از funcordefine[0-9])، نوع داده، عضو یک ساختار یا پیش‌نمونهٔ یک تابع (prototype) را در .I headers مشخص‌شده از طریق کامپایل یک برنامهٔ آزمایشی بررسی می‌کند. .I headers می‌تواند یک فایل سرایند تکی یا فهرستی از فایل‌های سرایند جدا شده با کاما باشد. در نتیجه، .B mkc_check_decl مقدار 1 (موفقیت) یا 0 (شکست) را در stdout چاپ می‌کند. به‌طور پیش‌فرض، فایل‌های موقت و حافظهٔ پنهان به صورت .RI _mkc_ _ _ .{c,err,res} در دایرکتوری .B MKC_CACHEDIR ایجاد می‌شوند. در اینجا، .I lheader_h آخرین فایل سرایند در فهرست جدا شده با کامای .IR headers است. .SH "گزینه‌ها (OPTIONS)" .TP .B "\-h" نمایش پیام راهنما. .TP .BI \-d حذف فایل‌های حافظهٔ پنهان و موقت. .TP .BI \-D حذف فایل‌های حافظهٔ پنهان. .SH "محیط (ENVIRONMENT)" .TP .B CC کامپایلر. به‌طور پیش‌فرض از .I cc استفاده می‌شود. .TP .B CPPFLAGS, CFLAGS گزینه‌های ارسالی به کامپایلر، برای نمونه \-I برای مشخص کردن دایرکتوری‌های اضافیِ حاوی فایل‌های سرایند. .TP .B MKC_VERBOSE اگر برابر با 1 تنظیم شود، پیام‌های با جزئیات بیشتر به stderr خروجی داده می‌شوند. .TP .B MKC_SHOW_CACHED اگر برابر با 1 تنظیم شود و MKC_VERBOSE نیز برابر با 1 باشد، نتایج ذخیره‌شده در حافظهٔ پنهان به stderr فرستاده می‌شوند. .TP .B MKC_COMMON_HEADERS فهرستی از فایل‌های سرایند برای افزودن به برنامهٔ آزمایشی .c. .TP .B MKC_CACHEDIR دایرکتوری محل ایجاد فایل‌های موقت و حافظهٔ پنهان. در صورت عدم تنظیم، در دایرکتوری جاری ایجاد می‌شوند. .TP .B MKC_NOCACHE تمامی نتایج در حافظهٔ پنهان ذخیره می‌شوند، مگر اینکه متغیر MKC_NOCACHE برابر با 1 تنظیم شده باشد. .TP .B MKC_DELETE_TMPFILES اگر برابر با 1 تنظیم شود، فایل‌های موقت حذف می‌شوند. .SH "مثال‌ها (EXAMPLES)" .VS mkc_check_decl define __GNUC__ mkc_check_decl define RTLD_LAZY dlfcn.h mkc_check_decl define FTS_W sys/types.h,sys/stat.h,fts.h mkc_check_decl variable sys_errlist errno.h mkc_check_decl variable __malloc_hook malloc.h mkc_check_decl func3 poll poll.h mkc_check_decl func2 fgetln stdio.h mkc_check_decl type mbstate_t wchar.h mkc_check_decl type long-long mkc_check_decl member tm.tm_isdst time.h mkc_check_decl member ifreq.ifr_addr.sa_len net/if.h mkc_check_decl member struct-stat.st_mtimespec sys/stat.h mkc_check_decl prototype 'int connect(int,const struct sockaddr*,socklen_t)' sys/socket.h mkc_check_decl prototype 'int connect(int,struct sockaddr*,socklen_t)' sys/socket.h .VE .SH "محتوای فایل C (C FILE CONTENT)" .TP .B define .VS #include ... #include #if defined(WHAT) int func(void) { return 0; } #else #error "WHAT is not a define" #endif .VE .TP .B variable .VS #include ... #include int func(void) { return sizeof ((WHAT)) && (&WHAT != 0); } .VE .TP .BR func3 " (مثال برای تابع با ۳ آرگومان)" .VS #include ... #include void func (void) { if (WHAT) return; WHAT(0,0,0); } .VE .TP .BR funcordefine3 " (مثال برای تابع/define با ۳ آرگومان)" .VS #include ... #include void func (void) { WHAT(0,0,0); } .VE .TP .B type .VS #include ... #include int func(void) { return sizeof (WHAT); } .VE .TP .B member " (مثال برای struct stat.st_mtimespec)" .VS #include int func(void) { struct_stat var; return sizeof (var.st_mtimespec); } .VE .TP .BR prototype " (مثال برای تابع void ttt(int,char**))" .VS #include ... #include void func (void); void func2 (void); void func (void) { if (ttt) return; } void ttt(int, char**); void func2 (void) { if (ttt) return; } .VE .SH "نویسندگان (AUTHORS)" Aleksey Cheusov