این دستور c99posix است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
c99 - برنامه های استاندارد C را کامپایل کنید
خلاصه
c99 [گزینه های...] نام خانوادگی [[نام خانوادگی] [-من فهرست راهنما]
[-L فهرست راهنما] [-l کتابخانه]]...
شرح
La c99 ابزار یک رابط برای سیستم کامپایل C استاندارد است. قبول خواهد کرد
کد منبع مطابق با استاندارد ISO C. سیستم از نظر مفهومی شامل الف است
کامپایلر و ویرایشگر پیوند فایل های ورودی که توسط نام خانوادگی عملوندها و -l گزینه-
آرگومان ها باید برای تولید یک فایل اجرایی کامپایل و پیوند شوند. (مشخص نیست
آیا پیوند به طور کامل در عملیات رخ می دهد c99; برخی از پیاده سازی ها ممکن است
اشیایی را تولید کنید که تا زمانی که فایل اجرا نشود به طور کامل حل نمی شوند.)
اگر -ج گزینه برای تمام عملوندهای نام مسیر فرم مشخص شده است پرونده.c، فایل ها:
$(نام پایه نام خانوادگی .c).o
باید در نتیجه تدوین موفق ایجاد شود. اگر -ج گزینه نیست
مشخص شده، مشخص نیست که آیا چنین است .o فایل ها برای ایجاد یا حذف می شوند پرونده.c
عملوندها
اگر هیچ گزینه ای وجود نداشته باشد که از ویرایش پیوند جلوگیری کند (مانند -ج or -E) و تمامی فایل های ورودی
کامپایل و لینک بدون خطا، فایل اجرایی حاصل باید مطابق با آن نوشته شود
به -o مجموعه گزینه (در صورت وجود) یا به فایل a.out.
فایل اجرایی باید همانطور که در آن مشخص شده است ایجاد شود بخش 1.1.1.4, پرونده خواندن, نوشتن,
و ایجاد، با این تفاوت که بیت های مجوز فایل باید روی: S_IRWXO | S_IRWXG |
S_IRWXU
و بیت های مشخص شده توسط umask فرآیند باید پاک شود.
OPTIONS
La c99 ابزار باید با حجم تعاریف پایه POSIX.1-2008 مطابقت داشته باشد، بخش
12.2, سودمندی نحو دستورالعمل، غیر از آن:
* گزینه ها را می توان با عملوندها در هم آمیخت.
* ترتیب مشخص کردن -L و -l گزینه ها و ترتیب مشخص کردن -l گزینه های
با توجه به نام خانوادگی عملوندها قابل توجه است.
* برنامه های منطبق باید هر گزینه را به طور جداگانه مشخص کنند. یعنی گزینه گروه بندی
حروف (مثلا -cO) لازم نیست توسط همه پیاده سازی ها شناسایی شود.
گزینه های زیر باید پشتیبانی شوند:
-ج مرحله ویرایش پیوند کامپایل را سرکوب کنید و هیچ شیئی را حذف نکنید
فایل هایی که تولید می شوند
-D نام[=ارزش]
تعریف کردن نام انگار با زبان سی #تعريف كردن بخشنامه اگر نه =ارزش داده می شود، الف
مقدار 1 باید استفاده شود. در -D گزینه اولویت کمتری نسبت به گزینه دارد -U گزینه.
یعنی اگر نام در هر دو a استفاده می شود -U و یک -D گزینه، نام تعریف نشده خواهد بود
صرف نظر از ترتیب گزینه ها پیاده سازی اضافی تعریف شده است نامs
ممکن است توسط کامپایلر ارائه شود. اجراها باید حداقل 2048 را پشتیبانی کنند
بایت از -D تعاریف و 256 نام.
-E فایل های منبع زبان C را در خروجی استاندارد کپی کنید و تمام پیش پردازنده ها را گسترش دهید
بخشنامه ها هیچ تلفیقی نباید انجام شود. اگر هر عملوندی یک متن نباشد
فایل، اثرات نامشخص هستند.
-g تولید اطلاعات نمادین در شی یا فایل های اجرایی. ماهیت از
این اطلاعات نامشخص است و ممکن است با پیاده سازی تعریف شده اصلاح شود
تعامل با گزینه های دیگر
-من فهرست راهنما
الگوریتم جستجوی سرصفحه هایی که نام آنها مطلق نیست را تغییر دهید
نام مسیر برای جستجو در دایرکتوری نامگذاری شده توسط فهرست راهنما نام مسیر قبل
در مکان های معمولی نگاه کنید بنابراین، سرصفحههایی که نام آنها در دو قسمت قرار میگیرد
نقل قول ها ("") باید ابتدا در دایرکتوری فایل جستجو شود
#include خط، سپس در دایرکتوری های نامگذاری شده در -من گزینه ها، و در حالت معمول باقی می مانند
مکان ها برای سرصفحه هایی که نام آنها در پرانتز قرار دارد ("<>")،
هدر باید فقط در دایرکتوری هایی که در آن نامگذاری شده است جستجو شود -من گزینه ها و سپس در
مکان های معمولی دایرکتوری های نامگذاری شده در -من گزینه ها باید به ترتیب جستجو شوند
مشخص شده. اگر -من از گزینه برای تعیین دایرکتوری استفاده می شود که یکی از دایرکتوری ها باشد
مکان های معمولی که به طور پیش فرض جستجو می شوند، نتایج نامشخص هستند. پیاده سازی ها
باید حداقل ده نمونه از این گزینه را در یک واحد پشتیبانی کند c99 فرمان
فراخوانی
-L فهرست راهنما
الگوریتم جستجوی کتابخانه های نامگذاری شده در را تغییر دهید -l اشیاء به
به دایرکتوری که توسط the نامگذاری شده است نگاه کنید فهرست راهنما نام مسیر قبل از جستجو در
مکان های معمولی دایرکتوری های نامگذاری شده در -L گزینه ها باید به ترتیب جستجو شوند
مشخص شده. اگر -L از گزینه برای تعیین دایرکتوری استفاده می شود که یکی از دایرکتوری ها باشد
مکان های معمولی که به طور پیش فرض جستجو می شوند، نتایج نامشخص هستند. پیاده سازی ها
باید حداقل ده نمونه از این گزینه را در یک واحد پشتیبانی کند c99 فرمان
فراخوانی اگر دایرکتوری مشخص شده توسط a -L گزینه حاوی فایل هایی با نام است
با هر یک از رشته ها شروع می شود "libc.", "لیبل.", "libpthread.", "libm.",
"لیبرت.", "libtrace.", "libxnet."، یا "لیبی."، نتایج نامشخص است.
-l کتابخانه
کتابخانه نامگذاری شده را جستجو کنید library.a. زمانی که یک کتابخانه وجود داشته باشد باید جستجو شود
نام مواجه می شود، بنابراین قرار دادن a -l گزینه قابل توجه است چندین
همانطور که در EXTENDED توضیح داده شده است، می توان کتابخانه های استاندارد را به این صورت مشخص کرد
بخش DESCRIPTION. پیاده سازی ها ممکن است پیاده سازی تعریف شده را تشخیص دهند
پسوندهای غیر از .a به عنوان کتابخانه ها.
-O سطح انتخابی
سطح بهینه سازی کد را مشخص کنید. اگر سطح انتخابی گزینه-argument است
رقمی '0'، تمام بهینه سازی کدهای ویژه باید غیرفعال شوند. اگر رقم باشد
'1'، ماهیت بهینه سازی نامشخص است. اگر -O گزینه حذف شده است،
ماهیت بهینه سازی پیش فرض سیستم نامشخص است. این است
مشخص نیست که آیا کد در حضور کد تولید شده است یا خیر -O گزینه 0 است
همان چیزی که در زمان ایجاد شد -O حذف شده است. دیگر سطح انتخابی مقادیر ممکن است
پشتیبانی.
-o مجموعه
از نام مسیر استفاده کنید مجموعه، به جای پیش فرض a.out، برای فایل اجرایی
تولید شده. اگر -o گزینه موجود با -ج or -E، نتیجه مشخص نیست.
-s تولید شی یا فایل های اجرایی، یا هر دو، که از آنها نمادین و غیره است
اطلاعاتی که برای اجرای صحیح با استفاده از exec خانواده تعریف شده در
حجم System Interfaces POSIX.1-2008 حذف شده است. اگر
هر دو -g و -s گزینه ها وجود دارد، اقدام انجام شده نامشخص است.
-U نام هر گونه تعریف اولیه را حذف کنید نام.
نمونه های متعدد از -D, -من, -L, -lو -U گزینه ها را می توان مشخص کرد.
عملگرها
برنامه باید اطمینان حاصل کند که حداقل یک نام خانوادگی عملوند مشخص شده است. در
فرم های زیر برای نام خانوادگی عملگرها باید پشتیبانی شوند:
فایل.c یک فایل منبع زبان C که باید کامپایل و به صورت اختیاری پیوند داده شود. برنامه
باید اطمینان حاصل کند که عملوند به این شکل است اگر -ج گزینه استفاده می شود.
فایل.a کتابخانه ای از فایل های شی که معمولا توسط the ar سودمند، و گذشت
مستقیماً به ویرایشگر پیوند. پیاده سازی ها ممکن است اجرا را تشخیص دهند
پسوندهای تعریف شده غیر از .a به عنوان نشان دهنده کتابخانه های فایل شی.
فایل.o یک فایل شی تولید شده توسط c99 -ج و مستقیماً به ویرایشگر پیوند منتقل می شود.
پیاده سازی ها ممکن است پسوندهای تعریف شده توسط پیاده سازی را تشخیص دهند .o as
نشان دهنده فایل های شی
پردازش سایر فایل ها به صورت پیاده سازی تعریف شده است.
STDIN
استفاده نشده.
INPUT فایل ها
هر فایل ورودی باید یکی از موارد زیر باشد: یک فایل متنی حاوی منبع زبان C
برنامه، یک فایل شی با فرمت تولید شده توسط c99 -ج، یا کتابخانه ای از فایل های شی، در
فرمت تولید شده با آرشیو کردن صفر یا چند فایل شی با استفاده از ar. اجراها ممکن است
ابزارهای کمکی اضافی را برای تولید فایل ها در این فرمت ها فراهم کنید. فایل ورودی اضافی
قالب ها به صورت پیاده سازی تعریف شده اند.
محیط زیست متغیرها
متغیرهای محیطی زیر باید بر اجرای آن تأثیر بگذارند c99:
زبان یک مقدار پیش فرض برای متغیرهای بین المللی سازی که تنظیم نشده اند یا
خالی. (به جلد تعاریف پایه POSIX.1-2008 مراجعه کنید، بخش 8.2,
بین المللی کردن متغیر برای تقدم بین المللی شدن
متغیرهایی که برای تعیین مقادیر دستههای محلی استفاده میشوند.)
LC_ALL اگر روی یک مقدار رشته ای غیر خالی تنظیم شده است، مقادیر بقیه را لغو کنید
متغیرهای بین المللی سازی
LC_CTYPE محلی را برای تفسیر توالی بایت های داده متنی تعیین کنید
به عنوان کاراکتر (به عنوان مثال، تک بایت در مقابل کاراکترهای چند بایتی در
آرگومان ها و فایل های ورودی).
LC_MESSAGES
محلی را که باید برای تأثیرگذاری بر قالب و محتویات استفاده شود، تعیین کنید
پیام های تشخیصی با خطای استاندارد نوشته شده است.
nlspath تعیین محل کاتالوگ پیام برای پردازش LC_MESSAGES.
TMPDIR نام مسیری را ارائه کنید که باید دایرکتوری پیشفرض را برای موقت لغو کند
فایل ها، در صورت وجود در سیستم های منطبق با XSI، یک نام مسیر ارائه کنید که باید
دایرکتوری پیش فرض را برای فایل های موقت، در صورت وجود، لغو کنید.
نامتقارن رویدادها
پیش فرض
با توجه به
اگر بیش از یک باشد نام خانوادگی عملوند که به .c (یا احتمالاً پسوندهای نامشخص دیگر) است
داده شده، برای هر فایل از این قبیل:
"%s:\n"، <نام خانوادگی>
ممکن است نوشته شود این پیام ها، اگر نوشته شوند، باید قبل از پردازش هر ورودی باشد
فایل؛ اگر روی استاندارد نوشته شده باشند نباید روی خروجی استاندارد نوشته شوند
خطا، همانطور که در بخش STDERR توضیح داده شده است.
اگر -E گزینه مشخص شده است، خروجی استاندارد باید یک فایل متنی باشد که نشان دهنده آن باشد
نتایج مرحله پیش پردازش زبان؛ ممکن است حاوی اطلاعات اضافی باشد
مناسب برای پاس های کامپایل بعدی.
STDERR
خطای استاندارد باید فقط برای پیام های تشخیصی استفاده شود. اگر بیش از یک نام خانوادگی
عملوند که به .c (یا احتمالاً پسوندهای نامشخص دیگری) برای هر یک از این پسوندها آورده شده است
فایل:
"%s:\n"، <نام خانوادگی>
ممکن است نوشته شود تا امکان شناسایی پیام های تشخیصی و هشدار دهنده را فراهم کند
فایل ورودی مناسب این پیامها، در صورت نوشته شدن، باید قبل از پردازش هر کدام باشند
فایل ورودی؛ در صورتی که به خطای استاندارد نوشته شوند، نباید آنها را با خطای استاندارد نوشته شود
خروجی استاندارد، همانطور که در بخش STDOUT توضیح داده شده است.
این ابزار ممکن است پیامهای هشداردهندهای در مورد شرایط خاصی تولید کند که تضمین کننده نیستند
یک مقدار خروجی خطا (غیر صفر).
OUTPUT فایل ها
فایل های شی یا فایل های اجرایی یا هر دو در فرمت های نامشخص تولید می شوند. اگر
نام مسیر یک فایل شی یا فایل اجرایی که باید توسط آن ایجاد شود c99 به یک موجود حل می شود
ورودی دایرکتوری برای فایلی که یک فایل معمولی نیست، مشخص نیست که آیا c99 باید
سعی کنید فایل را ایجاد کنید یا باید یک عیب یابی صادر کنید و با خروجی غیر صفر خارج شوید
وضعیت.
تمدید شده شرح
استاندارد کتابخانه
La c99 ابزار باید موارد زیر را تشخیص دهد -l گزینه های کتابخانه های استاندارد:
-l c این گزینه باید تمام رابط های ارجاع شده در سیستم را در دسترس قرار دهد
حجم رابط های POSIX.1-2008، به استثنای آن موارد
رابط های ذکر شده به عنوان ساکن در , , , ,
, , , , , ,
, , , , pthread_kill()، و
pthread_sigmask() که در , ، رابط ها به عنوان اختیاری در علامت گذاری شده اند
، رابط هایی با علامت ADV (اطلاعات مشاوره ای) در و
رابط هایی که با پیشوند clock_ یا time_ in شروع می شوند . این گزینه
برای جستجوی این کتابخانه نیازی به حضور نیست.
-l l این گزینه باید تمام رابط های مورد نیاز زبان C را در دسترس قرار دهد
خروجی از سافلکس که از طریق در دسترس نیستند -l c گزینه.
-l نخ
این گزینه باید تمام رابط های اشاره شده را در دسترس قرار دهد و
pthread_kill() و pthread_sigmask() اشاره شده در ، در
اجرای ممکن است این کتابخانه را در غیاب این گزینه جستجو کند.
-l m این گزینه باید تمام رابط های اشاره شده را در دسترس قرار دهد ,
و . یک پیاده سازی ممکن است این کتابخانه را در قسمت جستجو کند
عدم وجود این گزینه
-l rt این گزینه باید تمام رابط های اشاره شده را در دسترس قرار دهد ,
, , و ، رابط های علامت گذاری شده به عنوان
اختیاری در ، رابط هایی با علامت ADV (اطلاعات مشاوره ای) در
و رابط هایی که با پیشوند clock_ و time_ in شروع می شوند
. در صورت عدم وجود این، یک پیاده سازی ممکن است این کتابخانه را جستجو کند
گزینه.
-l رد این گزینه باید تمام رابط های اشاره شده را در دسترس قرار دهد ، در
اجرای ممکن است این کتابخانه را در غیاب این گزینه جستجو کند.
-l xnet این گزینه باید تمام رابط های اشاره شده را در دسترس قرار دهد ,
, , و . یک پیاده سازی
ممکن است در صورت نبود این گزینه در این کتابخانه جستجو کنید.
-l y این گزینه باید تمام رابط های مورد نیاز زبان C را در دسترس قرار دهد
خروجی از yacc که از طریق در دسترس نیستند -l c گزینه.
در صورت عدم وجود گزینه هایی که مانع فراخوانی ویرایشگر پیوند می شوند، مانند -ج or -E,
la c99 مطلوبیت باید معادل a را ایجاد کند -l c گزینه ای برای ارسال به لینک
ویرایشگر بعد از آخرین نام خانوادگی عملوند یا -l گزینه، باعث می شود که بعد از همه جستجو شود
فایلها و کتابخانههای شی دیگر بارگیری میشوند.
مشخص نیست که آیا کتابخانه ها libc.a, libl.a, libm.a, libpthread.a, librt.a,
libtrace.a, libxnet.a، یا liby.a به صورت فایل های معمولی وجود دارد. اجرا ممکن است به عنوان پذیرفته شود
-l گزینه-arguments نام اشیایی که به عنوان فایل های معمولی وجود ندارند.
خارجی نمادها
کامپایلر C و ویرایشگر پیوند باید از اهمیت نمادهای خارجی تا a پشتیبانی کند
طول حداقل 31 بایت اقدامی که پس از مواجهه با نمادهای بیش از مقدار انجام می شود
حداکثر طول نماد تعریف شده توسط پیاده سازی مشخص نشده است.
کامپایلر و ویرایشگر پیوند باید حداقل از 511 نماد خارجی در هر منبع پشتیبانی کند
فایل شی و در مجموع حداقل 4095 نماد خارجی. یک پیام تشخیصی باید
در صورت تجاوز از حد تعریف شده پیاده سازی، در خروجی استاندارد نوشته شود. دیگر
اقدامات نامشخص است
سربرگ جستجو
اگر فایلی با همان نام یکی از هدرهای استاندارد تعریف شده در Base
حجم تعاریف POSIX.1-2008، فصل 13, سرآیندهای، به عنوان بخشی از ارائه نشده است
پیاده سازی، در هر یک از مکان های معمولی که به طور پیش فرض جستجو می شود قرار می گیرد
هدرها، نتایج مشخص نشده است.
برنامه نويسي محیط ها
همه پیادهسازیها باید یکی از محیطهای برنامهنویسی زیر را پشتیبانی کنند
پیش فرض پیاده سازی ها ممکن است بیش از یکی از برنامه های زیر را پشتیبانی کنند
محیط ها برنامه ها می توانند استفاده کنند sysconf() یا دریافت کنید برای تعیین برنامه نویسی
محیط ها پشتیبانی می شوند.
جدول 4 4: برنامه نويسي محیط ها: نوع اندازه
┌────────────────────────┬─────────┬─────────┬──── ─────┬─────────┐
│برنامه نويسي محیط │ بیت in │ بیت in │ بیت in │ بیت in │
│ دریافت کنید نام │ INT │ طولانی │ اشارهگر │ off_t │
├────────────────────────┼─────────┼─────────┼──── ─────┼─────────┤
│_POSIX_V7_ILP32_OFF32 │ 32 │ 32 │ 32 │ 32 │
│_POSIX_V7_ILP32_OFFBIG │ 32 │ 32 │ 32 │ ≥64 │
│_POSIX_V7_LP64_OFF64 │ 32 │ 64 │ 64 │ 64 │
│_POSIX_V7_LPBIG_OFFBIG │ ≥ 32 │ ≥ 64 │ ≥ 64 │ ≥ 64 │
└────────────────────────┴─────────┴─────────┴──── ─────┴─────────┘
همه پیاده سازی ها باید از یک یا چند محیط پشتیبانی کنند که در آن عرض های
انواع زیر بیشتر از عرض نوع نیستند طولانی:
blksize_t ptrdiff_t tcflag_t
cc_t اندازه_ت wchar_t
mode_t speed_t wint_t
nfds_t ssize_t
pid_t suseconds_t
فایل های اجرایی ایجاد شده در هنگام انتخاب این محیط ها باید در حالت مناسب باشند
فرمت برای اجرا توسط exec خانواده توابع هر محیط ممکن است یکی از
آنهایی که در جدول 4 4، برنامه نويسي محیط ها: نوع اندازه، یا ممکن است محیط دیگری باشد.
نام محیط هایی که این نیاز را برآورده می کنند باید با a خروجی شود دریافت کنید
دستور با استفاده از آرگومان POSIX_V7_WIDTH_RESTRICTED_ENVS، به عنوان یک -فهرست جدا شده
از نام های مناسب برای استفاده با دریافت کنید −v گزینه. اگر بیش از یک محیط ملاقات کرد
طبق الزامات، نام تمام این محیط ها باید در خطوط جداگانه خروجی شود. هر
پس از آن می توان از این نام ها در نام های بعدی استفاده کرد دریافت کنید دستور به دست آوردن پرچم ها
مخصوص آن محیط با پسوندهای زیر به صورت مناسب اضافه شده است:
_CFLAGS برای دریافت پرچم های کامپایلر C.
_LDFLAGS برای دریافت پرچم های پیوند دهنده/لودر.
_LIBS برای دریافت کتابخانه ها.
این نیاز ممکن است در نسخه بعدی حذف شود.
هنگامی که این ابزار یک فایل حاوی تابعی به نام را پردازش می کند اصلی()، باید باشد
با نوع بازگشتی معادل تعریف شده است INT. با استفاده از بازگشت از تماس اولیه به
اصلی() باید معادل فراخوانی (به غیر از مسائل مربوط به حوزه زبانی) باشد
خروج() با مقدار برگشتی. رسیدن به پایان تماس اولیه به اصلی() باید باشد
معادل تماس گرفتن خروج(0). پیاده سازی نباید یک نمونه اولیه برای این کار اعلام کند
تابع.
پیادهسازیها رشتههای پیکربندی را برای پرچمهای کامپایلر C، پرچمهای پیوند دهنده/لودر،
و کتابخانه ها برای هر محیط پشتیبانی شده. زمانی که یک برنامه نیاز به استفاده از یک برنامه خاص دارد
محیط برنامه نویسی به جای محیط برنامه نویسی پیش فرض پیاده سازی
در حین کامپایل، برنامه ابتدا باید تأیید کند که پیاده سازی آن را پشتیبانی می کند
محیط مورد نظر در صورت پشتیبانی از محیط برنامه نویسی مورد نظر، اپلیکیشن
سپس استناد می شود c99 با پرچم کامپایلر C مناسب به عنوان اولین گزینه برای
کامپایل، پیوند دهنده/لودر مناسب بعد از هر گزینه دیگری به جز -l اما قبلاً
هر عملوند یا -l گزینه ها و کتابخانه های مناسب در انتهای عملوندها و
-l گزینه.
برنامه های منطبق نباید سعی کنند فایل های شی کامپایل شده را به یکدیگر پیوند دهند
مدل های مختلف برنامه نویسی برنامه ها همچنین باید آگاه باشند که داده های باینری قرار داده شده است
حافظه مشترک یا در فایلها ممکن است توسط برنامههای ساخته شده برای سایرین شناسایی نشود
مدل های برنامه نویسی
جدول 4 5: برنامه نويسي محیط ها: c99 استدلال
┌────────────────────────┬─────────────────────┬── ──────────────────
│برنامه نويسي محیط │ c99 استدلال │
│ دریافت کنید نام │ استفاده کنید │ دریافت کنید نام │
├────────────────────────┼─────────────────────┼── ──────────────────
│_POSIX_V7_ILP32_OFF32 │ پرچم های کامپایلر C │ POSIX_V7_ILP32_OFF32_CFLAGS │
│ │ پرچم های پیوند دهنده/بارکننده │ POSIX_V7_ILP32_OFF32_LDFLAGS │
│ │ کتابخانه ها │ POSIX_V7_ILP32_OFF32_LIBS │
├────────────────────────┼─────────────────────┼── ──────────────────
│_POSIX_V7_ILP32_OFFBIG │ پرچم های کامپایلر C │ POSIX_V7_ILP32_OFFBIG_CFLAGS │
│ │ پرچم های پیوند دهنده / بارگیری │ POSIX_V7_ILP32_OFFBIG_LDFLAGS │
│ │ کتابخانه ها │ POSIX_V7_ILP32_OFFBIG_LIBS │
├────────────────────────┼─────────────────────┼── ──────────────────
│_POSIX_V7_LP64_OFF64 │ پرچم های کامپایلر C │ POSIX_V7_LP64_OFF64_CFLAGS │
│ │ پرچم های پیوند دهنده/لودر │ POSIX_V7_LP64_OFF64_LDFLAGS │
│ │ کتابخانه ها │ POSIX_V7_LP64_OFF64_LIBS │
├────────────────────────┼─────────────────────┼── ──────────────────
│_POSIX_V7_LPBIG_OFFBIG │ پرچم های کامپایلر C │ POSIX_V7_LPBIG_OFFBIG_CFLAGS │
│ │ پرچم های پیوند دهنده / بارگیری │ POSIX_V7_LPBIG_OFFBIG_LDFLAGS │
│ │ کتابخانه ها │ POSIX_V7_LPBIG_OFFBIG_LIBS │
└────────────────────────┴─────────────────────┴── ───────────────────
علاوه بر محیط های برنامه نویسی اندازه نوع بالا، تمامی پیاده سازی ها نیز وجود دارد
از یک محیط برنامه نویسی چند رشته ای پشتیبانی می کند که متعامد به همه آنها باشد
محیط های برنامه نویسی ذکر شده در بالا در دریافت کنید ابزار می تواند برای دریافت پرچم استفاده شود
محیط برنامه نویسی رشته ای، همانطور که در نشان داده شده است جدول 4 6، موضوع برنامه نويسي
محیط: c99 استدلال.
جدول 4 6: موضوع برنامه نويسي محیط: c99 استدلال
┌────────────────────────┬─────────────────────┬── ──────────────────
│برنامه نويسي محیط │ c99 استدلال │
│ دریافت کنید نام │ استفاده کنید │ دریافت کنید نام │
├────────────────────────┼─────────────────────┼── ──────────────────────
│_POSIX_THREADS │ پرچم های کامپایلر C │ POSIX_V7_THREADS_CFLAGS │
│ │ پرچم های پیوند دهنده/بارکننده │ POSIX_V7_THREADS_LDFLAGS │
└────────────────────────┴─────────────────────┴── ─────────────────────
این پرچمهای محیط برنامهنویسی ممکن است همراه با هر نوع اندازه مورد استفاده قرار گیرند
محیط های برنامه نویسی که توسط پیاده سازی پشتیبانی می شوند.
خروج وضعیت
مقادیر خروجی زیر باید برگردانده شوند:
0 گردآوری یا ویرایش پیوند با موفقیت انجام شد.
>0 خطایی روی داد.
آثار OF خطاها
چه زمانی c99 با یک خطای کامپایل مواجه می شود که باعث می شود یک فایل شی ایجاد نشود
باید یک خطای تشخیصی به استاندارد بنویسد و به کامپایل کد منبع دیگر ادامه دهد
عملوندها، اما نباید فاز پیوند را انجام دهد و وضعیت خروج غیر صفر را برگرداند. اگر
ویرایش پیوند ناموفق است، یک پیام تشخیصی باید با خطای استاندارد نوشته شود و
c99 با وضعیت غیر صفر خارج می شود. یک برنامه منطبق باید بر وضعیت خروج تکیه کند
of c99، به جای وجود یا حالت فایل اجرایی.
La پیروی بخش هستند آموزنده
کاربرد طریقه استفاده
از آنجا که c99 ابزار معمولاً فایلهایی را در دایرکتوری فعلی ایجاد میکند
فرآیند کامپایل، معمولاً برای اجرای آن ضروری است c99 ابزار در یک فهرست در
که یک فایل می تواند ایجاد شود.
در مورد سیستمهایی که سازگاری POSIX را ارائه میکنند (به جلد تعاریف پایه POSIX.1-2008 مراجعه کنید،
فصل 2, سازگاری), c99 فقط با گزینه C-Language Development مورد نیاز است. XSI-
سیستم های سازگار همیشه ارائه می دهند c99.
برخی از پیاده سازی های تاریخی ایجاد کرده اند .o فایل های زمانی که -ج مشخص نشده است و بیشتر
بیش از یک فایل منبع داده شده است. از آنجایی که این ناحیه نامشخص باقی مانده است، برنامه نمی تواند
تکیه بر .o فایل هایی در حال ایجاد هستند، اما باید برای هر گونه مرتبطی نیز آماده شوند .o فایل هایی که
در حال حاضر وجود دارد و با تکمیل ویرایش پیوند حذف می شود.
این مفهوم احتمالی وجود دارد که اگر کاربر نسخه هایی از استاندارد را ارائه کند
توابع (قبل از اینکه با یک امر ضمنی مواجه شوند -l c یا صریح -l m) ، آن
این نسخه ها به جای نسخه های استاندارد استفاده می شوند. دلایل مختلفی وجود دارد
این ممکن است درست نباشد (توابع تعریف شده به عنوان ماکرو، دستکاری برای فضای نام تمیز،
و غیره)، بنابراین وجود فایل هایی که به شیوه ای مشابه کتابخانه های استاندارد نامگذاری شده اند
در داخل -L دایرکتوری ها به صراحت بیان شده است که رفتار نامشخصی ایجاد می کند.
همه عملکردهای مشخص شده در جلد System Interfaces POSIX.1-2008 ممکن است ساخته شوند
هنگامی که کتابخانه استاندارد C جستجو می شود توسط پیاده سازی ها قابل مشاهده است. مطابقت دارد
برنامه های کاربردی باید به صراحت درخواست جستجوی سایر کتابخانه های استاندارد را در هنگام عملکرد داشته باشند
قابل مشاهده توسط آن کتابخانه ها استفاده می شود.
در استاندارد ISO C نقشه برداری از کاراکترهای منبع فیزیکی به منبع C
مجموعه کاراکترها به صورت پیاده سازی تعریف شده است. پیاده سازی ها ممکن است کاراکترهای فضای سفید را حذف کنند
قبل از خاتمه یک خط (فیزیکی) به عنوان بخشی از این نقشه برداری و به عنوان یک
نتیجه این، یک یا چند کاراکتر با فاصله سفید (و هیچ کاراکتر دیگری) بین
آ شخصیت و کاراکتری که خط تولید را خاتمه می دهد
نتایج تعریف شده توسط پیاده سازی برنامه های قابل حمل نباید از چنین ساختارهایی استفاده کنند.
برخی از c99 کامپایلرهایی که با POSIX.1-2008 مطابقت ندارند به طور پیش فرض از سه گراف پشتیبانی نمی کنند.
مثال ها
1. مثال استفاده زیر کامپایل می شود foo.c و فایل اجرایی را ایجاد می کند فو:
c99 -o فو foo.c
مثال استفاده زیر کامپایل می شود foo.c و فایل شی را ایجاد می کند foo.o:
c99 -ج foo.c
مثال استفاده زیر کامپایل می شود foo.c و فایل اجرایی را ایجاد می کند a.out:
c99 foo.c
مثال استفاده زیر کامپایل می شود foo.c، آن را با bar.o، و ایجاد می کند
فایل اجرایی a.out. همچنین ممکن است ایجاد کند و ترک کند foo.o:
c99 foo.c bar.o
2. مثال زیر نشان میدهد که چگونه یک برنامه با استفاده از رابطهای رشته میتواند آزمایش کند
پشتیبانی و استفاده از یک محیط برنامه نویسی که از 32 بیت پشتیبانی می کند INT, طولانیو اشارهگر
انواع و یک off_t حداقل با استفاده از 64 بیت تایپ کنید:
offbig_env=$(getconf _POSIX_V7_ILP32_OFFBIG)
if [ $offbig_env != "-1" ] && [ $offbig_env != "تعریف نشده" ]
سپس
c99 $(getconf POSIX_V7_ILP32_OFFBIG_CFLAGS) \
$(getconf POSIX_V7_THREADS_CFLAGS) -D_XOPEN_SOURCE=700 \
$(getconf POSIX_V7_ILP32_OFFBIG_LDFLAGS) \
$(getconf POSIX_V7_THREADS_LDFLAGS) foo.c -o فو \
$(getconf POSIX_V7_ILP32_OFFBIG_LIBS) \
-l نخ
دیگر
از دست ILP32_OFFBIG برنامه نویسی محیط نه پشتیبانی
خروج 1
fi
3. مثال های زیر کاربرد و تعاملات را روشن می کند -L و -l گزینه.
موردی را در نظر بگیرید که در کدام ماژول است ac تابع فراخوانی f() در کتابخانه libQ.a، و ماژول
قبل از میلاد مسیح تابع فراخوانی g() در کتابخانه libp.a. فرض کنید که هر دو کتابخانه در آنجا هستند
/a/b/c. خط فرمان برای کامپایل و پیوند به روش دلخواه به صورت زیر است:
c99 -L /a/b/c main.o ac -l Q قبل از میلاد مسیح -l p
در این مورد -L گزینه فقط باید قبل از گزینه اول باشد -l گزینه، از آنجایی که هر دو libQ.a
و libp.a ساکن در همان دایرکتوری
چندین -L هنگامی که نام کتابخانه با هم برخورد می کند می توان از گزینه ها استفاده کرد. ساختمان بر روی
مثال قبلی، فرض کنید که کاربر می خواهد از یک جدید استفاده کند libp.a، در /a/a/a، اما
هنوز هم می خواهد f() از جانب /a/b/c/libQ.a:
c99 -L /a/a/a -L /a/b/c main.o ac -l Q قبل از میلاد مسیح -l p
در این مثال، پیوند دهنده در را جستجو می کند -L گزینه ها به ترتیب مشخص شده، و پیدا می کند
/a/a/a/libp.a قبل از /a/b/c/libp.a هنگام حل مراجع برای قبل از میلاد مسیح. ترتیب
la -l با این حال، گزینه ها هنوز مهم است.
4. مثال زیر نشان می دهد که چگونه یک برنامه کاربردی می تواند از محیط برنامه نویسی استفاده کند
عرض انواع زیر: blksize_t, cc_t, mode_t, nfds_t, pid_t, ptrdiff_t,
اندازه_ت, speed_t, ssize_t, suseconds_t, tcflag_t, wchar_t, wint_t
بیشتر از عرض نوع نیستند طولانی:
# نام خانوادگی را انتخاب کنید یک of la ذکر شده محیط ...
# ... اگر هیچ محدودیت اضافی وجود نداشته باشد، اولین مورد این کار را انجام می دهد:
CENV=$(getconf POSIX_V7_WIDTH_RESTRICTED_ENVS | head -nl)
# ... یا اگر محیطی که از فایل های حجیم پشتیبانی می کند ترجیح داده می شود،
# به دنبال نام هایی باشید که حاوی "OFF64" یا "OFFBIG" هستند. (این انتخاب می کند
# آخرین مورد در لیست اگر مطابقت نداشت.)
برای CENV به دلار (getconf POSIX_V7_WIDTH_RESTRICTED_ENVS)
do
مورد $CENV در
*OFF64*|*OFFBIG*) break ;;
که C
انجام شده
# نام محیط انتخابی اکنون می تواند به صورت زیر استفاده شود:
c99 $(getconf ${CENV}_CFLAGS) -D _POSIX_C_SOURCE=200809L \
$(getconf ${CENV}_LDFLAGS) foo.c -o foo \
$(getconf ${CENV}_LIBS)
منطقی
La c99 سودمندی بر اساس است c89 ابزاری که در ابتدا در ISO POSIX-2: 1993 معرفی شد
استاندارد
برخی از تغییرات از c89 شامل توانایی درهم آمیختن گزینه ها و عملوندها است
(که بسیاری c89 اجراهای مجاز علیرغم اینکه مشخص نشده است)، توضیحات
of -l به عنوان یک گزینه به جای یک عملوند، و اصلاح محتویات
بخش کتابخانه های استاندارد برای در نظر گرفتن سرصفحه ها و گزینه های جدید. مثلا،
به توضیحات اضافه شد -l rtو -l رد برای گزینه Tracing اضافه شده است.
POSIX.1-2008 مشخص می کند که c99 ابزار باید بتواند از فایل های معمولی استفاده کند *.o
فایل ها و برای a.out فایل ها. پیاده سازی ها برای بازنویسی فایل های موجود دیگر رایگان هستند
هنگام تلاش برای ایجاد فایلهای شی و فایلهای اجرایی، نوع میکند، اما لازم نیست
این کار را انجام دهید. اگر چیزی غیر از یک فایل معمولی مشخص شده باشد و استفاده از آن برای هر کدام ناموفق باشد
دلیل، c99 باید یک پیام تشخیصی صادر کند و با خروجی غیر صفر خارج شود
وضعیت اما برای برخی از انواع فایل، مشکل ممکن است برای مدت طولانی متوجه نشود. برای
به عنوان مثال، اگر یک FIFO به نام a.out در فهرست فعلی وجود دارد، c99 ممکن است تلاش کند باز شود
a.out و در آویزان خواهد شد باز کن() تماس بگیرید تا زمانی که فرآیند دیگری FIFO را برای خواندن باز کند.
سپس c99 ممکن است بیشتر موارد را بنویسد a.out به FIFO و هنگامی که تلاش می کند به دنبال نزدیک شدن باشد شکست می خورد
به شروع فایل برای درج مهر زمانی (FIFO ها فایل های قابل جستجو نیستند). در c99
ابزار همچنین مجاز است در صورت مواجهه با یک عیب یابی فوراً صادر کند a.out or *.o
فایلی که یک فایل معمولی نیست. برای استفاده قابل حمل، برنامه ها باید اطمینان حاصل کنند که هر کدام
a.out, -o گزینه-استدلال، یا *.o فایل های مربوط به هر *.c فایل ها تضاد ندارند
با نامهایی که قبلاً استفاده شدهاند که فایلهای معمولی یا پیوندهای نمادین نیستند
فایل های معمولی
در بسیاری از سیستم ها، برنامه های کاربردی چند رشته ای در یک محیط برنامه نویسی اجرا می شوند
متمایز از مورد استفاده شده توسط برنامه های کاربردی تک رشته ای. این برنامه نویسی چند رشته ای
محیط (علاوه بر نیاز به مشخص کردن -l نخ در زمان پیوند) ممکن است نیاز داشته باشد
هنگام پردازش هدرها در زمان کامپایل، پرچم های اضافی تنظیم می شود (-D_REENTRANT بودن
مشترک). این محیط برنامه نویسی متعامد به نوع برنامه نویسی اندازه است
محیط های مورد بحث در بالا و لیست شده در جدول 4 4، برنامه نويسي محیط ها: نوع
اندازه. این نسخه از استاندارد اضافه می کند دریافت کنید فراخوانی ابزار برای ارائه کامپایلر C
پرچمها و پرچمهای پیوند دهنده/لودر مورد نیاز برای پشتیبانی از برنامههای چند رشتهای. توجه داشته باشید که در
سیستمی که در آن برنامه های تک رشته ای مورد خاصی از چند رشته ای هستند
برنامه، هر دوی اینها دریافت کنید تماس ها ممکن است رشته های NULL را برگردانند. در مورد سایر پیاده سازی ها
هر دوی این رشته ها ممکن است رشته های غیر NULL باشند.
کمیته استانداردسازی C سه گراف ها را اختراع کرد (به عنوان مثال، "؟؟!!" نشان دادن '|') به
رسیدگی به مشکلات قابلیت حمل کاراکتر در محیط های توسعه بر اساس ملی
انواع مجموعه کاراکترهای استاندارد ISO/IEC 7:646 1991 بیتی. با این حال، این محیط ها
در زمان انتشار اولین استاندارد ISO C و در عمل منسوخ شده بودند
سه گراف ها برای هدف مورد نظر خود استفاده نشده اند و معمولاً در نظر گرفته شده اند
معنی اصلی آنها در K&R C. برای مثال، در عمل یک رشته منبع زبان C مانند
"چی؟؟!" معمولاً در نظر گرفته شده است که به دو پایان برسد شخصیت ها و یک
، نه در '|'.
آینده جهت
ندارد.
با استفاده از خدمات onworks.net از c99posix آنلاین استفاده کنید