MKC_CHECK_DECL(1) MKC_CHECK_DECL(1)

mkc_check_decl - بررسی وجود define، متغیر، تابع، نوع داده، عضو ساختار یا پیش‌نمونهٔ تابع

mkc_check_decl [OPTIONS] <check_type> <what> [headers...]

آرگومان check_type یکی از مقادیر define، variable، func[0-9]، funcordefine[0-9]، type، member یا prototype است. بسته به مقدار آن، mkc_check_decl به‌ترتیب وجود یک define، متغیر، تابع با تعداد مشخص‌شده‌ای از آرگومان‌ها (یا define معادل در صورت استفاده از funcordefine[0-9])، نوع داده، عضو یک ساختار یا پیش‌نمونهٔ یک تابع (prototype) را در headers مشخص‌شده از طریق کامپایل یک برنامهٔ آزمایشی بررسی می‌کند. headers می‌تواند یک فایل سرایند تکی یا فهرستی از فایل‌های سرایند جدا شده با کاما باشد. در نتیجه، mkc_check_decl مقدار 1 (موفقیت) یا 0 (شکست) را در stdout چاپ می‌کند. به‌طور پیش‌فرض، فایل‌های موقت و حافظهٔ پنهان به صورت _mkc_<check_type>_<what>_<lheader_h>.{c,err,res} در دایرکتوری MKC_CACHEDIR ایجاد می‌شوند. در اینجا، lheader_h آخرین فایل سرایند در فهرست جدا شده با کامای headers است.

نمایش پیام راهنما.
حذف فایل‌های حافظهٔ پنهان و موقت.
حذف فایل‌های حافظهٔ پنهان.

کامپایلر. به‌طور پیش‌فرض از cc استفاده می‌شود.
گزینه‌های ارسالی به کامپایلر، برای نمونه -I برای مشخص کردن دایرکتوری‌های اضافیِ حاوی فایل‌های سرایند.
اگر برابر با 1 تنظیم شود، پیام‌های با جزئیات بیشتر به stderr خروجی داده می‌شوند.
اگر برابر با 1 تنظیم شود و MKC_VERBOSE نیز برابر با 1 باشد، نتایج ذخیره‌شده در حافظهٔ پنهان به stderr فرستاده می‌شوند.
فهرستی از فایل‌های سرایند برای افزودن به برنامهٔ آزمایشی .c.
دایرکتوری محل ایجاد فایل‌های موقت و حافظهٔ پنهان. در صورت عدم تنظیم، در دایرکتوری جاری ایجاد می‌شوند.
تمامی نتایج در حافظهٔ پنهان ذخیره می‌شوند، مگر اینکه متغیر MKC_NOCACHE برابر با 1 تنظیم شده باشد.
اگر برابر با 1 تنظیم شود، فایل‌های موقت حذف می‌شوند.

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

#include <header1.h>
 ...
#include <headerN.h>
#if defined(WHAT)
int func(void)
{
   return 0;
}
#else
#error "WHAT is not a define"
#endif
#include <header1.h>
 ...
#include <headerN.h>
int func(void)
{
   return sizeof ((WHAT)) && (&WHAT != 0);
}
#include <header1.h>
 ...
#include <headerN.h>
void func (void)
{
   if (WHAT) return;
   WHAT(0,0,0);
}
#include <header1.h>
 ...
#include <headerN.h>
void func (void)
{
   WHAT(0,0,0);
}
#include <header1.h>
 ...
#include <headerN.h>
int func(void)
{
   return sizeof (WHAT);
}
#include <sys/stat.h>
int func(void)
{
   struct_stat var;
   return sizeof (var.st_mtimespec);
}
#include <header1.h>
 ...
#include <headerN.h>
void func (void);
void func2 (void);
void func (void)
{
   if (ttt) return;
}
void ttt(int, char**);
void func2 (void)
{
   if (ttt) return;
}

Aleksey Cheusov <vle@gmx.net>

December 2, 2023