.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "GFORTRAN 1" .TH GFORTRAN 1 2026-04-30 gcc-16.1.0 GNU .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" aarch64\-linux\-gnu\-gfortran \- کامپایلر فرترن گنو برای معماری AArch64 .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" gfortran [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR] [\fB\-W\fR\fIwarn\fR...] [\fB\-pedantic\fR] [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...] [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR] [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine\-option\fR...] [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR... .PP تنها کاربردی‌ترین گزینه‌ها در اینجا فهرست شده‌اند؛ برای مشاهده بقیه موارد به ادامه متن رجوع کنید. .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \&\fBgfortran\fR از تمامی گزینه‌های پشتیبانی‌شده توسط دستور \&\fBgcc\fR پشتیبانی می‌کند. در این راهنما تنها گزینه‌های ویژه گنو فرترن مستند شده‌اند. .PP تمامی گزینه‌های GCC و GNU Fortran هم توسط \&\fBgfortran\fR و هم توسط \&\fBgcc\fR (و همچنین هر درایور دیگری که هم‌زمان ساخته شده است، مانند \&\fBg++\fR) پذیرفته می‌شوند، چرا که افزودن گنو فرترن به توزیع GCC، امکان پذیرش گزینه‌های گنو فرترن را برای تمامی درایورهای مربوطه فعال می‌کند. .PP در برخی موارد، گزینه‌ها دارای فرم مثبت و منفی هستند؛ فرم منفی \&\fB\-ffoo\fR به‌صورت \&\fB\-fno\-foo\fR خواهد بود. این راهنما تنها یکی از این دو حالت را (هر کدام که حالت پیش‌فرض نباشد) مستند می‌کند. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" در اینجا خلاصه‌ای از تمام گزینه‌های مختص به گنو فرترن آورده شده که بر اساس نوع گروه‌بندی شده‌اند. توضیحات مربوطه در بخش‌های بعدی آمده است. .IP "\fIگزینههای زبان فرترن (Fortran Language Options)\fR" 4 .IX Item "Fortran Language Options" \&\fB\-fall\-intrinsics \-fallow\-argument\-mismatch \-fallow\-invalid\-boz \&\-fbackslash \-fcray\-pointer \-fd\-lines\-as\-code \-fd\-lines\-as\-comments \&\-fdec \-fdec\-char\-conversions \-fdec\-structure \-fdec\-intrinsic\-ints \&\-fdec\-static \-fdec\-math \-fdec\-include \-fdec\-format\-defaults \&\-fdec\-blank\-format\-item \-fdefault\-double\-8 \-fdefault\-integer\-8 \&\-fdefault\-real\-8 \-fdefault\-real\-10 \-fdefault\-real\-16 \-fdollar\-ok \&\-ffixed\-line\-length\-\fR\fIn\fR \fB\-ffixed\-line\-length\-none \-fpad\-source \&\-ffree\-form \-ffree\-line\-length\-\fR\fIn\fR \fB\-ffree\-line\-length\-none \&\-fimplicit\-none \-finteger\-4\-integer\-8 \-fmax\-identifier\-length \&\-fmodule\-private \-ffixed\-form \-fno\-range\-check \-fopenacc \-fopenmp \&\-fopenmp\-allocators \-fopenmp\-simd \-freal\-4\-real\-10 \-freal\-4\-real\-16 \&\-freal\-4\-real\-8 \-freal\-8\-real\-10 \-freal\-8\-real\-16 \-freal\-8\-real\-4 \&\-std=\fR\fIstd\fR \fB\-ftest\-forall\-temp \-funsigned\fR .IP "\fIگزینههای پیشپردازش (Preprocessing Options)\fR" 4 .IX Item "Preprocessing Options" \&\fB\-A\-\fR\fIquestion\fR[\fB=\fR\fIanswer\fR] \&\fB\-A\fR\fIquestion\fR\fB=\fR\fIanswer\fR \fB\-C \-CC \-D\fR\fImacro\fR[\fB=\fR\fIdefn\fR] \&\fB\-H \-P \&\-U\fR\fImacro\fR \fB\-cpp \-dD \-dI \-dM \-dN \-dU \-fworking\-directory \&\-imultilib\fR \fIdir\fR \&\fB\-iprefix\fR \fIfile\fR \fB\-iquote \-isysroot\fR \fIdir\fR \fB\-isystem\fR \fIdir\fR \fB\-nocpp \&\-nostdinc \&\-undef\fR .IP "\fIگزینههای خطا و هشدار (Error and Warning Options)\fR" 4 .IX Item "Error and Warning Options" \&\fB\-Waliasing \-Wall \-Wampersand \-Warray\-bounds \&\-Wc\-binding\-type \-Wcharacter\-truncation \-Wconversion \&\-Wno\-deprecated\-openmp \-Wdo\-subscript \-Wfunction\-elimination \&\-Wimplicit\-interface \-Wimplicit\-procedure \-Wintrinsic\-shadow \&\-Wuse\-without\-only \-Wintrinsics\-std \-Wline\-truncation \-Wno\-align\-commons \&\-Wno\-overwrite\-recursive \-Wno\-tabs \-Wreal\-q\-constant \-Wsurprising \&\-Wunderflow \-Wunused\-parameter \-Wrealloc\-lhs \-Wrealloc\-lhs\-all \&\-Wfrontend\-loop\-interchange \-Wtarget\-lifetime \-fmax\-errors=\fR\fIn\fR \&\fB\-fsyntax\-only \-pedantic \&\-pedantic\-errors\fR .IP "\fIگزینههای اشکالزدایی (Debugging Options)\fR" 4 .IX Item "Debugging Options" \&\fB\-fbacktrace \-fdebug\-aux\-vars \-ffpe\-trap=\fR\fIlist\fR \&\fB\-ffpe\-summary=\fR\fIlist\fR\fB \fR .IP "\fIگزینههای دایرکتوری (Directory Options)\fR" 4 .IX Item "Directory Options" \&\fB\-I\fR\fIdir\fR \fB\-J\fR\fIdir\fR \fB\-fintrinsic\-modules\-path\fR \fIdir\fR .IP "\fIگزینههای پیوند (Link Options)\fR" 4 .IX Item "Link Options" \&\fB\-static\-libgfortran \-static\-libquadmath\fR .IP "\fIگزینههای زمان اجرا (Runtime Options)\fR" 4 .IX Item "Runtime Options" \&\fB\-fconvert=\fR\fIconversion\fR \fB\-fmax\-subrecord\-length=\fR\fIlength\fR \&\fB\-frecord\-marker=\fR\fIlength\fR \fB\-fsign\-zero\fR .IP "\fIگزینههای همکنشپذیری (Interoperability Options)\fR" 4 .IX Item "Interoperability Options" \&\fB\-fc\-prototypes \-fc\-prototypes\-external\fR .IP "\fIگزینههای تولید کد (Code Generation Options)\fR" 4 .IX Item "Code Generation Options" \&\fB\-faggressive\-function\-elimination \-fblas\-matmul\-limit=\fR\fIn\fR \&\fB\-fbounds\-check \-ftail\-call\-workaround \-ftail\-call\-workaround=\fR\fIn\fR \&\fB\-fcheck\-array\-temporaries \&\-fcheck= \&\-fcoarray= \-fexternal\-blas \-fexternal\-blas64 \-ff2c \&\-ffrontend\-loop\-interchange \-ffrontend\-optimize \&\-finit\-character=\fR\fIn\fR \fB\-finit\-integer=\fR\fIn\fR \fB\-finit\-local\-zero \&\-finit\-derived \-finit\-logical= \&\-finit\-real= \&\-finline\-intrinsics[=<\fR\fIminloc\fR\fB,\fR\fImaxloc\fR\fB>] \&\-finline\-matmul\-limit=\fR\fIn\fR \&\fB\-finline\-arg\-packing \-fmax\-array\-constructor=\fR\fIn\fR \&\fB\-fmax\-stack\-var\-size=\fR\fIn\fR \fB\-fno\-align\-commons \-fno\-automatic \&\-fno\-protect\-parens \-fno\-underscoring \-fsecond\-underscore \&\-fpack\-derived \-frealloc\-lhs \-frecursive \-frepack\-arrays \&\-fshort\-enums \-fstack\-arrays\fR .IP "\fIگزینههای توسعهدهندگان (Developer Options)\fR" 4 .IX Item "Developer Options" \&\fB\-fdump\-fortran\-global \-fdump\-fortran\-optimized \&\-fdump\-fortran\-original \-fdump\-parse\-tree \-save\-temps\fR .SS "گزینههای کنترل لهجه فرترن (Options controlling Fortran dialect)" .IX Subsection "Options controlling Fortran dialect" گزینه‌های زیر جزئیات لهجه فرترن مورد پذیرش کامپایلر را کنترل می‌کنند: .IP \fB\-ffree\-form\fR 4 .IX Item "-ffree-form" .PD 0 .IP \fB\-ffixed\-form\fR 4 .IX Item "-ffixed-form" .PD قالب‌بندی مورد استفاده توسط پرونده منبع را مشخص می‌کند. قالب‌بندی فرم آزاد (free form) در فرترن ۹۰ معرفی شد. قالب‌بندی فرم ثابت (fixed form) به طور سنتی در برنامه‌های قدیمی‌تر فرترن استفاده می‌شد. هنگامی که هیچ‌یک از این دو گزینه مشخص نشود، فرم منبع توسط پسوند پرونده تعیین می‌شود. .IP \fB\-fall\-intrinsics\fR 4 .IX Item "-fall-intrinsics" این گزینه باعث می‌شود تمام رویه‌های ذاتی (شامل افزونه‌های اختصاصی GNU) پذیرفته شوند. این گزینه می‌تواند همراه با \fB\-std=\fR مفید باشد تا انطباق با استاندارد تحمیل شود اما همچنان به تمام دامنه توابع و رویه‌های ذاتی موجود در \fBgfortran\fR دسترسی وجود داشته باشد. در نتیجه، گزینه \fB\-Wintrinsics\-std\fR نادیده گرفته می‌شود و هیچ رویه تعریف‌شده توسط کاربر با نام مشابه با هر رویه ذاتی فراخوانی نمی‌شود، مگر اینکه به صراحت به صورت \f(CW\*(C`EXTERNAL\*(C'\fR اعلان شده باشد. .IP \fB\-fallow\-argument\-mismatch\fR 4 .IX Item "-fallow-argument-mismatch" برخی از کدها شامل فراخوانی‌هایی به رویه‌های خارجی با عدم تطابق میان فراخوانی‌ها و تعریف رویه، یا با عدم تطابق میان فراخوانی‌های مختلف هستند. چنین کدهایی ناسازگار با استاندارد هستند و معمولاً با یک خطا مشخص می‌شوند. این گزینه خطا را به هشداری تنزل می‌دهد که تنها با غیرفعال کردن تمام هشدارها از طریق \&\fB\-w\fR می‌توان آن را غیرفعال کرد. به ازای هر آرگومان تنها یک مورد توسط این هشدار نشان‌گذاری می‌شود. گزینه \fB\-fallow\-argument\-mismatch\fR توسط \&\fB\-std=legacy\fR به طور ضمنی فعال می‌شود. .Sp استفاده از این گزینه \fIاکیداً\fR نهی می‌شود. امکان‌پذیر است که با استفاده از یک رابط صریح و \f(CWTYPE(*)\fR کدی سازگار با استاندارد ارائه داد که انواع متفاوتی از آرگومان‌ها را مجاز می‌شمارد. .IP \fB\-fallow\-invalid\-boz\fR 4 .IX Item "-fallow-invalid-boz" یک ثابت لفظی BOZ می‌تواند در تعداد محدودی از زمینه‌ها در فرترن سازگار با استاندارد رخ دهد. این گزینه وضعیت خطا را به یک هشدار تنزل می‌دهد و به یک ثابت لفظی BOZ اجازه می‌دهد در جاهایی ظاهر شود که استاندارد فرترن در غیر این صورت استفاده از آن را ممنوع می‌کرد. .IP \fB\-fd\-lines\-as\-code\fR 4 .IX Item "-fd-lines-as-code" .PD 0 .IP \fB\-fd\-lines\-as\-comments\fR 4 .IX Item "-fd-lines-as-comments" .PD پردازش ویژه‌ای را برای خطوطی که در منابع فرم ثابت با \f(CW\*(C`d\*(C'\fR یا \f(CW\*(C`D\*(C'\fR شروع می‌شوند فعال می‌کند. اگر گزینه \fB\-fd\-lines\-as\-code\fR داده شود، با آن‌ها طوری رفتار می‌شود که گویی ستون اول حاوی یک فاصله خالی است. اگر گزینه \&\fB\-fd\-lines\-as\-comments\fR داده شود، به عنوان خطوط توضیحات در نظر گرفته می‌شوند. .IP \fB\-fdec\fR 4 .IX Item "-fdec" حالت سازگاری با DEC. افزونه‌ها و سایر ویژگی‌هایی را فعال می‌کند که رفتار پیش‌فرض کامپایلرهای قدیمی‌تر (مانند DEC) را شبیه‌سازی می‌کنند. این ویژگی‌ها غیراستاندارد هستند و باید به هر قیمتی از آن‌ها اجتناب شود. برای جزئیات بیشتر در مورد پیاده‌سازی این افزونه‌ها در GNU Fortran مستندات کامل را ببینید. .Sp سایر فلگ‌های فعال‌شده توسط این سوییچ عبارتند از: \&\fB\-fdollar\-ok\fR \fB\-fcray\-pointer\fR \fB\-fdec\-char\-conversions\fR \&\fB\-fdec\-structure\fR \fB\-fdec\-intrinsic\-ints\fR \fB\-fdec\-static\fR \&\fB\-fdec\-math\fR \fB\-fdec\-include\fR \fB\-fdec\-blank\-format\-item\fR \&\fB\-fdec\-format\-defaults\fR .Sp اگر \fB\-fd\-lines\-as\-code\fR/\fB\-fd\-lines\-as\-comments\fR تنظیم نشده باشند، آنگاه \&\fB\-fdec\fR همچنین \fB\-fd\-lines\-as\-comments\fR را تنظیم می‌کند. .IP \fB\-fdec\-char\-conversions\fR 4 .IX Item "-fdec-char-conversions" استفاده از ثابت‌های لفظی نویسه‌ای را در انتساب‌ها و دستورهای \f(CW\*(C`DATA\*(C'\fR برای متغیرهای غیرنویسه‌ای فعال می‌کند. .IP \fB\-fdec\-structure\fR 4 .IX Item "-fdec-structure" دستورهای \f(CW\*(C`STRUCTURE\*(C'\fR و \f(CW\*(C`RECORD\*(C'\fR از DEC و همچنین \f(CW\*(C`UNION\*(C'\fR، \&\f(CW\*(C`MAP\*(C'\fR و نقطه (\*(Aq.\*(Aq) را به عنوان جداکننده عضو (علاوه بر \*(Aq%\*(Aq) فعال می‌کند. این ویژگی صرفاً برای سازگاری ارائه شده است؛ در صورت امکان باید به جای آن از انواع مشتق‌شده فرترن ۹۰ استفاده شود. .IP \fB\-fdec\-intrinsic\-ints\fR 4 .IX Item "-fdec-intrinsic-ints" انواع B/I/J/K از توابع عدد صحیح موجود را فعال می‌کند (مانند \f(CW\*(C`BIAND\*(C'\fR، \f(CW\*(C`IIAND\*(C'\fR، \f(CW\*(C`JIAND\*(C'\fR و غیره). برای فهرست کامل رویه‌های ذاتی، بخش \fBIntrinsic Procedures\fR را ببینید. .IP \fB\-fdec\-math\fR 4 .IX Item "-fdec-math" فلگ منسوخ‌شده. هدف از این گزینه فعال‌سازی رویه‌های ذاتی ریاضی قدیمی مانند \f(CW\*(C`COTAN\*(C'\fR و توابع مثلثاتی بر حسب درجه (مانند \f(CW\*(C`TAND\*(C'\fR، \f(CW\*(C`ATAND\*(C'\fR و غیره) برای سازگاری با کدهای قدیمی‌تر بود. این گزینه دیگر قابل استفاده نیست. این توابع مثلثاتی اکنون یا بخشی از فرترن ۲۰۲۳ هستند یا افزونه‌های GNU محسوب می‌شوند. .IP \fB\-fdec\-static\fR 4 .IX Item "-fdec-static" ویژگی‌های به سبک DEC یعنی \f(CW\*(C`STATIC\*(C'\fR و \f(CW\*(C`AUTOMATIC\*(C'\fR را فعال می‌کند تا نحوه ذخیره‌سازی متغیرها و سایر اشیاء را به صراحت مشخص کند. .IP \fB\-fdec\-include\fR 4 .IX Item "-fdec-include" تجزیه \f(CW\*(C`INCLUDE\*(C'\fR را به عنوان یک دستور علاوه بر تجزیه آن به عنوان یک سطر \f(CW\*(C`INCLUDE\*(C'\fR فعال می‌کند. هنگامی که به عنوان دستور \f(CW\*(C`INCLUDE\*(C'\fR تجزیه می‌شود، \f(CW\*(C`INCLUDE\*(C'\fR مجبور نیست در یک سطر واحد باشد و می‌تواند از ادامه‌دهنده‌های سطر استفاده کند. .IP \fB\-fdec\-format\-defaults\fR 4 .IX Item "-fdec-format-defaults" مشخص‌کننده‌های فرمت \fBF\fR، \fBG\fR و \fBI\fR را فعال می‌کند تا بدون مشخص‌کننده‌های عرض استفاده شوند؛ در عوض از عرض‌های پیش‌فرض استفاده می‌شود. .IP \fB\-fdec\-blank\-format\-item\fR 4 .IX Item "-fdec-blank-format-item" یک مورد فرمت خالی را در انتهای مشخصات فرمت فعال می‌کند؛ یعنی هیچ چیزی بعد از کامای نهایی قرار نگیرد. .IP \fB\-fdollar\-ok\fR 4 .IX Item "-fdollar-ok" علامت \fB$\fR را به عنوان یک نویسه غیرابتدایی معتبر در نام نماد مجاز می‌شمارد. نمادهایی که با \fB$\fR آغاز می‌شوند رد می‌شوند، زیرا مشخص نیست چه قوانینی باید برای نوع‌گذاری ضمنی اعمال شوند چرا که سازندگان مختلف قوانین متفاوتی را پیاده‌سازی کرده‌اند. استفاده از \fB$\fR در دستورهای \f(CW\*(C`IMPLICIT\*(C'\fR نیز رد می‌شود. .IP \fB\-fbackslash\fR 4 .IX Item "-fbackslash" تفسیر بک‌اسلش‌ها را در ثابت‌های لفظی رشته‌ای از یک نویسه بک‌اسلش تکی به نویسه‌های گریز «به سبک C» تغییر می‌دهد. ترکیب‌های زیر بسط داده می‌شوند: \fB\ea\fR، \fB\eb\fR، \fB\ef\fR، \fB\en\fR، \&\fB\er\fR، \fB\et\fR، \fB\ev\fR، \fB\e\e\fR و \fB\e0\fR به ترتیب به نویسه‌های اسکی alert، backspace، form feed، newline، carriage return، horizontal tab، vertical tab، backslash و NUL. علاوه بر این، \fB\ex\fR\fInn\fR، \fB\eu\fR\fInnnn\fR و \&\fB\eU\fR\fInnnnnnnn\fR (که در آن هر \fIn\fR یک رقم هگزادسیمال است) به نویسه‌های یونیکد متناظر با نقاط کد مشخص‌شده تبدیل می‌شوند. تمام ترکیب‌های دیگر یک نویسه که قبل از آن \fB\e\fR آمده باشد بدون تغییر باقی می‌مانند. .IP \fB\-fmodule\-private\fR 4 .IX Item "-fmodule-private" سطح دسترسی پیش‌فرض موجودیت‌های ماژول را روی \f(CW\*(C`PRIVATE\*(C'\fR قرار می‌دهد. موجودیت‌های مرتبط از طریق Use در دسترس نیستند مگر اینکه به صراحت به عنوان \f(CW\*(C`PUBLIC\*(C'\fR اعلان شده باشند. .IP \fB\-ffixed\-line\-length\-\fR\fIn\fR 4 .IX Item "-ffixed-line-length-n" ستونی را مشخص می‌کند که پس از آن، نویسه‌ها در خطوط معمولی با فرمت ثابت در پرونده منبع نادیده گرفته می‌شوند، و مگر اینکه \f(CW\*(C`\-fno\-pad\-source\*(C'\fR مشخص شده باشد، پس از پایان خطوط کوتاه با فرمت ثابت، فاصله‌های خالی تا رسیدن به آن ستون فرض می‌شوند (گویی تا آن طول پر شده است). .Sp مقدارهای پرکاربرد برای \fIn\fR شامل ۷۲ (استاندارد و پیش‌فرض)، ۸۰ (تصویر کارت پانچ) و ۱۳۲ (متناظر با گزینه‌های «extended\-source» در برخی کامپایلرهای رایج) است. همچنین \fIn\fR می‌تواند \fBnone\fR باشد، به این معنی که کل خط معنادار است و به ثابت‌های نویسه‌ای ادامه‌یافته هرگز فاصله‌های خالی ضمنی برای پر کردن خط افزوده نمی‌شود. گزینه \&\fB\-ffixed\-line\-length\-0\fR همان معنای \&\fB\-ffixed\-line\-length\-none\fR را دارد. .IP \fB\-fno\-pad\-source\fR 4 .IX Item "-fno-pad-source" به طور پیش‌فرض در خطوط با فرمت ثابت، پس از پایان خطوط کوتاه فاصله‌های خالی فرض می‌شوند (گویی تا آن طول پر شده است). در صورتی که یکی از گزینه‌های \&\fB\-ffixed\-line\-length\-0\fR، \fB\-ffixed\-line\-length\-none\fR یا \fB\-fno\-pad\-source\fR استفاده شود، این کار انجام نمی‌شود. با هر یک از این گزینه‌ها، به ثابت‌های نویسه‌ای ادامه‌یافته هرگز فاصله‌های خالی ضمنی برای پر کردن خط اضافه نمی‌شود. .IP \fB\-ffree\-line\-length\-\fR\fIn\fR 4 .IX Item "-ffree-line-length-n" ستونی را مشخص می‌کند که پس از آن نویسه‌ها در خطوط معمولی با فرمت آزاد در پرونده منبع نادیده گرفته می‌شوند. مقدار پیش‌فرض ۱۳۲ است. همچنین \fIn\fR می‌تواند \fBnone\fR باشد، به این معنی که کل خط معنادار است. گزینه \&\fB\-ffree\-line\-length\-0\fR معنای یکسانی با \&\fB\-ffree\-line\-length\-none\fR دارد. .IP \fB\-fmax\-identifier\-length=\fR\fIn\fR 4 .IX Item "-fmax-identifier-length=n" حداکثر طول مجاز شناسه را مشخص می‌کند. مقادیر معمول ۳۱ (فرترن ۹۵) و ۶۳ (فرترن ۲۰۰۳ و بعد از آن) هستند. .IP \fB\-fimplicit\-none\fR 4 .IX Item "-fimplicit-none" مشخص می‌کند که هیچ نوع‌گذاری ضمنی مجاز نیست، مگر اینکه توسط دستورهای صریح \&\f(CW\*(C`IMPLICIT\*(C'\fR لغو شود. این معادل افزودن \&\f(CW\*(C`implicit none\*(C'\fR به ابتدای هر رویه است. .IP \fB\-fcray\-pointer\fR 4 .IX Item "-fcray-pointer" افزونه اشاره‌گر Cray را فعال می‌کند که قابلیتی شبیه به اشاره‌گر در زبان C را فراهم می‌سازد. .IP \fB\-fopenacc\fR 4 .IX Item "-fopenacc" پردازش رهنمودهای OpenACC شامل \fB!$acc\fR در فرترن با فرمت آزاد، و \&\fB!$acc\fR، \fBc$acc\fR و \fB*$acc\fR در فرترن با فرمت ثابت را فعال می‌کند. هنگامی که \&\fB\-fopenacc\fR مشخص شود، کامپایلر کد شتاب‌یافته را بر اساس رابط برنامه‌نویسی کاربردی OpenACC نسخه 2.6 <\fBhttps://www.openacc.org\fR> تولید می‌کند. این گزینه مستلزم \fB\-pthread\fR است و بنابراین تنها روی مقصدهایی پشتیبانی می‌شود که از \fB\-pthread\fR پشتیبانی می‌کنند. گزینه \fB\-fopenacc\fR به طور ضمنی شامل \fB\-frecursive\fR نیز می‌شود. .IP \fB\-fopenmp\fR 4 .IX Item "-fopenmp" پردازش رهنمودهای OpenMP شامل \fB!$omp\fR را در فرترن فعال می‌کند. علاوه بر این، نشانگر کامپایل شرطی \fB!$\fR را در فرترن فعال می‌سازد. در فرترن با فرمت منبع ثابت، نشانگرها همچنین می‌توانند با \&\fBc\fR یا \fB*\fR آغاز شوند. هنگامی که \fB\-fopenmp\fR مشخص شود، کامپایلر کد موازی را طبق رابط برنامه‌نویسی کاربردی OpenMP نسخه 4.5 <\fBhttps://www.openmp.org\fR> تولید می‌کند. این گزینه مستلزم \fB\-pthread\fR است و بنابراین تنها روی مقصدهایی پشتیبانی می‌شود که از \fB\-pthread\fR پشتیبانی می‌کنند. گزینه \fB\-fopenmp\fR به طور ضمنی شامل \&\fB\-fopenmp\-simd\fR و \fB\-frecursive\fR نیز می‌شود. .IP \fB\-fopenmp\-allocators\fR 4 .IX Item "-fopenmp-allocators" پردازش تخصیص، تخصیص مجدد و آزادسازی متغیرهای قابل‌تخصیص (allocatable) و اشاره‌گر فرترن را که با استفاده از سازه‌های \&\fB!$omp allocators\fR و \fB!$omp allocate\fR تخصیص یافته‌اند، فعال می‌کند. پرونده‌های حاوی هر یک از این دو رهنمود باید علاوه بر \fB\-fopenmp\fR با این گزینه نیز کامپایل شوند. علاوه بر این، تمام پرونده‌هایی که ممکن است متغیری را که با یک تخصیص‌دهنده OpenMP تخصیص یافته است آزاد کرده یا مجدداً تخصیص دهند، باید با این گزینه کامپایل شوند. این شامل انتساب ذاتی به متغیرهای قابل‌تخصیص در صورت احتمال وقوع تخصیص مجدد و آزادسازی ناشی از مواردی مانند: پایان حوزه (scope)، آزادسازی صریح، \&\fBintent(out)\fR، آزادسازی مؤلفه‌های قابل‌تخصیص و غیره است. پرونده‌هایی که وضعیت تخصیص را تغییر نمی‌دهند یا فقط برای مؤلفه‌های یک نوع مشتق‌شده هستند که با استفاده از آن دو رهنمود تخصیص نیافته‌اند، نیازی به کامپایل شدن با این گزینه ندارند؛ همچنین پرونده‌هایی که چنین متغیرهایی را پس از آزادسازی یا پس از تخصیص توسط تخصیص‌دهنده عادی فرترن مدیریت می‌کنند، نیازی به این گزینه ندارند. .IP \fB\-fopenmp\-simd\fR 4 .IX Item "-fopenmp-simd" پردازش رهنمودهای OpenMP شامل \f(CW\*(C`simd\*(C'\fR، \f(CW\*(C`declare simd\*(C'\fR، \&\f(CW\*(C`declare reduction\*(C'\fR، \f(CW\*(C`assume\*(C'\fR، \f(CW\*(C`ordered\*(C'\fR، \f(CW\*(C`scan\*(C'\fR و \f(CW\*(C`loop\*(C'\fR، و رهنمودهای ترکیبی که \f(CW\*(C`simd\*(C'\fR را به عنوان جزء تشکیل‌دهنده به همراه \f(CW\*(C`!$omp\*(C'\fR در فرترن دارند فعال می‌کند. علاوه بر این، نشانگر کامپایل شرطی \fB!$\fR را در فرترن فعال می‌سازد. در فرترن با فرمت منبع ثابت، نشانگرها می‌توانند با \fBc\fR یا \&\fB*\fR نیز شروع شوند. سایر رهنمودهای OpenMP نادیده گرفته می‌شوند. مگر اینکه \fB\-fopenmp\fR نیز مشخص شده باشد، ناحیه \f(CW\*(C`loop\*(C'\fR صرف‌نظر از بند \f(CW\*(C`bind\*(C'\fR مشخص‌شده، به ناحیه وظیفه جاری مقید می‌شود. .IP \fB\-fno\-range\-check\fR 4 .IX Item "-fno-range-check" بررسی محدوده روی نتایج ساده‌سازی عبارات ثابت در زمان کامپایل را غیرفعال می‌کند. به عنوان مثال، GNU Fortran هنگام ساده‌سازی \f(CW\*(C`a = 1. / 0\*(C'\fR در زمان کامپایل خطا می‌دهد. با این گزینه خطایی داده نمی‌شود و به \f(CW\*(C`a\*(C'\fR مقدار \f(CW\*(C`+Infinity\*(C'\fR اختصاص می‌یابد. اگر یک عبارت به مقداری خارج از محدوده مربوطه [\f(CW\*(C`\-HUGE()\*(C'\fR:\f(CWHUGE()\fR] ارزیابی شود، آنگاه عبارت بر حسب مورد با \f(CW\*(C`\-Inf\*(C'\fR یا \f(CW\*(C`+Inf\*(C'\fR جایگزین می‌شود. به همین ترتیب، \f(CW\*(C`DATA i/Z\*(AqFFFFFFFF\*(Aq/\*(C'\fR در بیشتر سیستم‌ها منجر به سرریز عدد صحیح می‌شود، اما با \fB\-fno\-range\-check\fR مقدار «دور می‌زند» و در عوض \f(CW\*(C`i\*(C'\fR با \-1 مقداردهی اولیه می‌شود. .IP \fB\-fdefault\-integer\-8\fR 4 .IX Item "-fdefault-integer-8" انواع پیش‌فرض صحیح و منطقی را روی یک نوع با عرض ۸ بایت تنظیم می‌کند. این گزینه بر نوع (kind) ثابت‌های عدد صحیح مانند \f(CW42\fR نیز تأثیر می‌گذارد. بر خلاف \&\fB\-finteger\-4\-integer\-8\fR، این گزینه متغیرهای دارای اعلان صریح kind را ارتقا نمی‌دهد. .IP \fB\-fdefault\-real\-8\fR 4 .IX Item "-fdefault-real-8" نوع پیش‌فرض اعشاری (real) را روی یک نوع با عرض ۸ بایت تنظیم می‌کند. این گزینه همچنین بر نوع ثابت‌های اعشاری غیرمضاعف مانند \f(CW1.0\fR تأثیر می‌گذارد. این گزینه عرض پیش‌فرض \f(CW\*(C`DOUBLE PRECISION\*(C'\fR و ثابت‌های اعشاری مضاعف مانند \f(CW\*(C`1.d0\*(C'\fR را در صورت امکان به ۱۶ بایت ارتقا می‌دهد. اگر \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR همراه با \f(CW\*(C`fdefault\-real\-8\*(C'\fR داده شود، \f(CW\*(C`DOUBLE PRECISION\*(C'\fR و ثابت‌های اعشاری مضاعف ارتقا نمی‌یابند. بر خلاف \fB\-freal\-4\-real\-8\fR، گزینه \&\f(CW\*(C`fdefault\-real\-8\*(C'\fR متغیرهایی را که دارای اعلان صریح kind هستند ارتقا نمی‌دهد. .IP \fB\-fdefault\-real\-10\fR 4 .IX Item "-fdefault-real-10" نوع پیش‌فرض اعشاری را روی یک نوع با عرض ۱۰ بایت تنظیم می‌کند. این گزینه همچنین بر نوع ثابت‌های اعشاری غیرمضاعف مانند \f(CW1.0\fR تأثیر می‌گذارد. این گزینه عرض پیش‌فرض \f(CW\*(C`DOUBLE PRECISION\*(C'\fR و ثابت‌های اعشاری مضاعف مانند \f(CW\*(C`1.d0\*(C'\fR را در صورت امکان به ۱۶ بایت ارتقا می‌دهد. اگر \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR همراه با \f(CW\*(C`fdefault\-real\-10\*(C'\fR داده شود، \f(CW\*(C`DOUBLE PRECISION\*(C'\fR و ثابت‌های اعشاری مضاعف ارتقا نمی‌یابند. بر خلاف \fB\-freal\-4\-real\-10\fR، گزینه \&\f(CW\*(C`fdefault\-real\-10\*(C'\fR متغیرهایی را که دارای اعلان صریح kind هستند ارتقا نمی‌دهد. .IP \fB\-fdefault\-real\-16\fR 4 .IX Item "-fdefault-real-16" نوع پیش‌فرض اعشاری را روی یک نوع با عرض ۱۶ بایت تنظیم می‌کند. این گزینه همچنین بر نوع ثابت‌های اعشاری غیرمضاعف مانند \f(CW1.0\fR تأثیر می‌گذارد. این گزینه عرض پیش‌فرض \f(CW\*(C`DOUBLE PRECISION\*(C'\fR و ثابت‌های اعشاری مضاعف مانند \f(CW\*(C`1.d0\*(C'\fR را در صورت امکان به ۱۶ بایت ارتقا می‌دهد. اگر \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR همراه با \f(CW\*(C`fdefault\-real\-16\*(C'\fR داده شود، \f(CW\*(C`DOUBLE PRECISION\*(C'\fR و ثابت‌های اعشاری مضاعف ارتقا نمی‌یابند. بر خلاف \fB\-freal\-4\-real\-16\fR، گزینه \&\f(CW\*(C`fdefault\-real\-16\*(C'\fR متغیرهایی را که دارای اعلان صریح kind هستند ارتقا نمی‌دهد. .IP \fB\-fdefault\-double\-8\fR 4 .IX Item "-fdefault-double-8" نوع \f(CW\*(C`DOUBLE PRECISION\*(C'\fR و ثابت‌های اعشاری مضاعف مانند \f(CW\*(C`1.d0\*(C'\fR را روی یک نوع با عرض ۸ بایت تنظیم می‌کند. اگر این مقدار قبلاً پیش‌فرض بوده باشد، کاری انجام نمی‌دهد. این گزینه از ارتقای \f(CW\*(C`DOUBLE PRECISION\*(C'\fR و ثابت‌های اعشاری مضاعف مانند \&\f(CW\*(C`1.d0\*(C'\fR به ۱۶ بایت توسط گزینه‌های \fB\-fdefault\-real\-8\fR، \&\fB\-fdefault\-real\-10\fR و \fB\-fdefault\-real\-16\fR جلوگیری می‌کند. .IP \fB\-finteger\-4\-integer\-8\fR 4 .IX Item "-finteger-4-integer-8" تمام موجودیت‌های \f(CWINTEGER(KIND=4)\fR را به موجودیت‌های \f(CWINTEGER(KIND=8)\fR ارتقا می‌دهد. اگر \f(CW\*(C`KIND=8\*(C'\fR در دسترس نباشد، یک خطا صادر می‌شود. این گزینه باید با احتیاط استفاده شود و ممکن است برای کدهای شما مناسب نباشد. حوزه‌های نگرانی احتمالی عبارتند از فراخوانی به رویه‌های خارجی، تراز در \f(CW\*(C`EQUIVALENCE\*(C'\fR و/یا \f(CW\*(C`COMMON\*(C'\fR، رابط‌های جنریک، تبدیل ثابت لفظی BOZ، و ورودی/خروجی. بررسی نمایش میانی کد ترجمه‌شده فرترن، که توسط \&\fB\-fdump\-tree\-original\fR تولید می‌شود، پیشنهاد می‌گردد. .IP \fB\-freal\-4\-real\-8\fR 4 .IX Item "-freal-4-real-8" .PD 0 .IP \fB\-freal\-4\-real\-10\fR 4 .IX Item "-freal-4-real-10" .IP \fB\-freal\-4\-real\-16\fR 4 .IX Item "-freal-4-real-16" .IP \fB\-freal\-8\-real\-4\fR 4 .IX Item "-freal-8-real-4" .IP \fB\-freal\-8\-real\-10\fR 4 .IX Item "-freal-8-real-10" .IP \fB\-freal\-8\-real\-16\fR 4 .IX Item "-freal-8-real-16" .PD تمام موجودیت‌های \f(CWREAL(KIND=M)\fR را به موجودیت‌های \f(CWREAL(KIND=N)\fR ارتقا می‌دهد. اگر \f(CWREAL(KIND=N)\fR در دسترس نباشد، یک خطا صادر می‌شود. فلگ‌های \f(CW\*(C`\-freal\-4\-\*(C'\fR بر نوع اعشاری پیش‌فرض نیز تأثیر می‌گذارند و فلگ‌های \&\f(CW\*(C`\-freal\-8\-\*(C'\fR نیز بر نوع اعشاری با دقت مضاعف اثر می‌گذارند. تمام انواع دیگر اعشاری تحت تأثیر این گزینه قرار نمی‌گیرند. این ارتقا همچنین بر ثابت‌های لفظی اعشاری از نوع پیش‌فرض و با دقت مضاعف و به ترتیب شماره نوع مشخص‌شده ۴ یا ۸ اعمال می‌شود. با این حال، \f(CW\*(C`\-fdefault\-real\-8\*(C'\fR، \f(CW\*(C`\-fdefault\-real\-10\*(C'\fR، \&\f(CW\*(C`\-fdefault\-real\-10\*(C'\fR و \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR برای انواع اعشاری پیش‌فرض و با دقت مضاعف، هم برای ثابت‌های لفظی اعشاری و هم برای اعلان‌های بدون شماره kind، تقدم دارند. توجه داشته باشید که برای \f(CW\*(C`REAL(KIND=KIND(1.0))\*(C'\fR مقدار لفظی ممکن است ارتقا یابد و سپس نتیجه ممکن است دوباره ارتقا پیدا کند. این گزینه‌ها باید با احتیاط استفاده شوند و ممکن است برای کدهای شما مناسب نباشند. حوزه‌های نگرانی احتمالی شامل فراخوانی به رویه‌های خارجی، تراز در \f(CW\*(C`EQUIVALENCE\*(C'\fR و/یا \f(CW\*(C`COMMON\*(C'\fR، رابط‌های جنریک، تبدیل ثابت لفظی BOZ، و ورودی/خروجی و فراخوانی به رویه‌های ذاتی هنگام ارسال مقدار به آرگومان ساختگی \f(CW\*(C`kind=\*(C'\fR است. بررسی نمایش میانی کد ترجمه‌شده فرترن، تولیدشده توسط \&\fB\-fdump\-fortran\-original\fR یا \fB\-fdump\-tree\-original\fR، پیشنهاد می‌شود. .Sp توجه: این گزینه‌ها با ورودی/خروجی نوع مشتق‌شده تعریف‌شده توسط کاربر (DTIO) ناسازگار هستند. .IP \fB\-std=\fR\fIstd\fR 4 .IX Item "-std=std" استانداردی را مشخص می‌کند که برنامه باید با آن مطابقت داشته باشد، که می‌تواند یکی از مقادیر \fBf95\fR، \fBf2003\fR، \fBf2008\fR، \fBf2018\fR، \&\fBf2023\fR، \fBgnu\fR یا \fBlegacy\fR باشد. مقدار پیش‌فرض برای \&\fIstd\fR برابر \fBgnu\fR است که یک ابرمجموعه از آخرین استاندارد فرترن را مشخص می‌کند که شامل تمام افزونه‌های پشتیبانی‌شده توسط GNU Fortran است، هرچند برای افزونه‌های منسوخ‌شده‌ای که استفاده از آن‌ها در کدهای جدید توصیه نمی‌شود، هشدار داده می‌شود. مقدار \fBlegacy\fR معادل است اما بدون هشدارهای مربوط به افزونه‌های منسوخ‌شده، و ممکن است برای برنامه‌های غیراستاندارد قدیمی مفید باشد. مقادیر \fBf95\fR، \fBf2003\fR، \&\fBf2008\fR، \fBf2018\fR و \fBf2023\fR به ترتیب انطباق دقیق با استانداردهای فرترن ۹۵، فرترن ۲۰۰۳، فرترن ۲۰۰۸، فرترن ۲۰۱۸ و فرترن ۲۰۲۳ را مشخص می‌کنند؛ برای تمام افزونه‌های فراتر از استاندارد زبان مربوطه خطا داده می‌شود و برای ویژگی‌های فرترن ۷۷ که در استانداردهای بعدی مجاز اما رو به زوال هستند، هشدار صادر می‌شود. گزینه منسوخ‌شده \fB\-std=f2008ts\fR به عنوان یک نام مستعار برای \&\fB\-std=f2018\fR عمل می‌کند. این گزینه صرفاً برای سازگاری عقبرو با نسخه‌های قبلی gfortran وجود دارد و نباید دیگر استفاده شود. گزینه \fB\-std=f202y\fR به عنوان یک نام مستعار برای \fB\-std=f2023\fR عمل کرده و ویژگی‌های پیشنهادی را برای آزمایش فرترن 202y فعال می‌کند. با توسعه استاندارد فرترن 202y، ممکن است پیاده‌سازی تغییر کند یا ویژگی‌های آزمایشی جدید حذف شوند. .IP \fB\-ftest\-forall\-temp\fR 4 .IX Item "-ftest-forall-temp" پوشش آزمون را با وادار کردن بیشتر انتساب‌های forall به استفاده از متغیر موقت افزایش می‌دهد. .IP \fB\-funsigned\fR 4 .IX Item "-funsigned" افزونه آزمایشی بدون علامت (unsigned) را مجاز می‌سازد. .SS "فعالسازی و سفارشیسازی پیشپردازش (Enable and customize preprocessing)" .IX Subsection "Enable and customize preprocessing" بسیاری از کامپایلرهای فرترن، از جمله فرترن گنو (GNU Fortran)، امکان عبور دادن کد منبع از یک پیش‌پردازنده C (کوتاه‌نوشت CPP؛ گاهی نیز پیش‌پردازنده فرترن یا FPP نامیده می‌شود) را جهت فراهم‌سازی امکان کامپایل شرطی می‌دهند. در مورد فرترن گنو، این همان پیش‌پردازنده C گنو در حالت سنتی (traditional mode) است. در سیستم‌هایی با نام‌های پرونده نگه‌دارنده بزرگی و کوچکی حروف (case\-preserving)، پیش‌پردازنده در صورتی که پسوند نام فایل \fI.F\fR، \fI.FOR\fR، \fI.FTN\fR، \fI.fpp\fR، \&\fI.FPP\fR، \fI.F90\fR، \fI.F95\fR، \fI.F03\fR یا \fI.F08\fR باشد، به صورت خودکار فراخوانی می‌شود. برای فراخوانی دستی پیش‌پردازنده روی هر فایلی، از \fB\-cpp\fR استفاده کنید؛ برای غیرفعال کردن پیش‌پردازش روی فایل‌هایی که پیش‌پردازنده به طور خودکار اجرا می‌شود، از \&\fB\-nocpp\fR استفاده نمایید. .PP هنگام کامپایل یک پرونده پیش‌پردازش‌شده، از \fB\-fpreprocessed\fR استفاده کنید. این گزینه پیش‌پردازنده C را نادیده می‌گیرد. .PP اگر یک فایل پیش‌پردازش‌شده شامل پرونده دیگری با دستور فرترن \f(CW\*(C`INCLUDE\*(C'\fR باشد، فایل گنجانده‌شده پیش‌پردازش نمی‌شود. برای پیش‌پردازش فایل‌های گنجانده‌شده، از دستور معادل پیش‌پردازنده \f(CW\*(C`#include\*(C'\fR استفاده کنید. .PP اگر فرترن گنو پیش‌پردازنده را فراخوانی کند، \f(CW\*(C`_\|_GFORTRAN_\|_\*(C'\fR تعریف می‌شود. ماکروهای \f(CW\*(C`_\|_GNUC_\|_\*(C'\fR، \f(CW\*(C`_\|_GNUC_MINOR_\|_\*(C'\fR و \&\f(CW\*(C`_\|_GNUC_PATCHLEVEL_\|_\*(C'\fR می‌توانند برای تشخیص نسخه کامپایلر استفاده شوند. برای جزئیات بیشتر به \fBTop,,Overview,cpp,The C Preprocessor\fR مراجعه کنید. .PP فرترن گنو علاوه بر نوع‌های گونه (kind types) مورد نیاز استاندارد فرترن، از تعدادی نوع گونه \f(CW\*(C`INTEGER\*(C'\fR و \f(CW\*(C`REAL\*(C'\fR نیز پشتیبانی می‌کند. در دسترس بودن هر نوع گونه معین وابسته به معماری سیستم است. ماکروهای پیش‌پردازنده پیش‌فرض زیر می‌توانند برای گنجاندن شرطی کدهای مربوط به این نوع‌های گونه اضافی به کار روند: \f(CW\*(C`_\|_GFC_INT_1_\|_\*(C'\fR، \&\f(CW\*(C`_\|_GFC_INT_2_\|_\*(C'\fR، \f(CW\*(C`_\|_GFC_INT_8_\|_\*(C'\fR، \f(CW\*(C`_\|_GFC_INT_16_\|_\*(C'\fR، \&\f(CW\*(C`_\|_GFC_REAL_10_\|_\*(C'\fR و \&\f(CW\*(C`_\|_GFC_REAL_16_\|_\*(C'\fR. .PP در حالی که CPP استاندارد عملی (de facto) برای پیش‌پردازش کدهای فرترن است، بخش ۳ استاندارد فرترن ۹۵ (ISO/IEC 1539\-3:1998) کامپایل شرطی را تعریف می‌کند، که چندان مورد استفاده گسترده نیست و مستقیماً توسط کامپایلر فرترن گنو پشتیبانی نمی‌شود. .PP گزینه‌های زیر پیش‌پردازش کدهای فرترن را کنترل می‌کنند: .IP \fB\-cpp\fR 4 .IX Item "-cpp" .PD 0 .IP \fB\-nocpp\fR 4 .IX Item "-nocpp" .PD فعال‌سازی پیش‌پردازش. اگر پسوند فایل \fI.fpp\fR، \fI.FPP\fR، \fI.F\fR، \fI.FOR\fR، \&\fI.FTN\fR، \fI.F90\fR، \fI.F95\fR، \fI.F03\fR یا \fI.F08\fR باشد، پیش‌پردازنده به صورت خودکار فراخوانی می‌شود. از این گزینه برای فعال‌سازی دستی پیش‌پردازش انواع فایل‌های فرترن استفاده کنید. .Sp برای غیرفعال کردن پیش‌پردازش فایل‌هایی با هر یک از پسوندهای فهرست‌شده در بالا، از حالت نفی آن استفاده کنید: \fB\-nocpp\fR. .Sp پیش‌پردازنده در حالت سنتی (traditional mode) اجرا می‌شود. تمامی محدودیت‌های قالب فایل، به ویژه محدودیت‌های طول خط، بر خروجی پیش‌پردازش‌شده نیز اعمال می‌شوند؛ بنابراین شاید مناسب باشد که از گزینه‌های \&\fB\-ffree\-line\-length\-none\fR یا \fB\-ffixed\-line\-length\-none\fR استفاده کنید. .IP \fB\-dM\fR 4 .IX Item "-dM" به جای خروجی عادی، فهرستی از دستورات هدایت‌کننده \f(CW\*(Aq#define\*(Aq\fR را برای تمام ماکروهای تعریف‌شده در حین اجرای پیش‌پردازنده، شامل ماکروهای از پیش تعریف‌شده، تولید می‌کند. این امکان به شما راهی برای پی بردن به این که چه مواردی در نسخه پیش‌پردازنده شما از پیش تعریف شده‌اند می‌دهد. با فرض اینکه پرونده‌ای به نام \fIfoo.f90\fR ندارید، دستور .Sp .Vb 1 \& touch foo.f90; gfortran \-cpp \-E \-dM foo.f90 .Ve .Sp تمامی ماکروهای از پیش تعریف‌شده را نمایش می‌دهد. .IP \fB\-dD\fR 4 .IX Item "-dD" مانند \fB\-dM\fR است، جز در دو مورد: شامل ماکروهای از پیش تعریف‌شده نمی‌شود، و هم دستورات هدایت‌کننده \f(CW\*(C`#define\*(C'\fR و هم نتیجه پیش‌پردازش را در خروجی درج می‌کند. هر دو نوع خروجی به پرونده خروجی استاندارد (stdout) ارسال می‌شوند. .IP \fB\-dN\fR 4 .IX Item "-dN" مانند \fB\-dD\fR، اما فقط نام ماکروها را درج می‌کند، نه بسط (تعریف) آن‌ها را. .IP \fB\-dU\fR 4 .IX Item "-dU" مانند \fB\-dD\fR است، با این تفاوت که تنها ماکروهایی که بسط داده می‌شوند یا وضعیت تعریف‌شدن آن‌ها در دستورات پیش‌پردازنده آزمایش می‌شود، در خروجی می‌آیند؛ خروجی تا زمان استفاده یا آزمایش ماکرو به تاخیر می‌افتد؛ و همچنین دستورات \f(CW\*(Aq#undef\*(Aq\fR برای ماکروهایی که آزمایش شده‌اند اما در آن زمان تعریف نشده بودند، در خروجی درج می‌شوند. .IP \fB\-dI\fR 4 .IX Item "-dI" دستورات هدایت‌کننده \f(CW\*(Aq#include\*(Aq\fR را علاوه بر نتیجه پیش‌پردازش در خروجی درج می‌کند. .IP \fB\-fworking\-directory\fR 4 .IX Item "-fworking-directory" تولید نشانگرهای خط (linemarkers) را در خروجی پیش‌پردازنده فعال می‌کند تا کامپایلر از دایرکتوری کاری جاری در زمان پیش‌پردازش مطلع شود. هنگامی که این گزینه فعال باشد، پیش‌پردازنده پس از نشانگر خط اولیه، یک نشانگر خط دوم همراه با پوشه کاری جاری به دنبال دو اسلش درج می‌کند. در صورت وجود این پوشه در ورودی پیش‌پردازش‌شده، GCC آن را به عنوان پوشه کاری جاری در برخی از قالب‌های اطلاعات اشکال‌زدایی درج می‌کند. این گزینه در صورت فعال بودن اطلاعات اشکال‌زدایی به طور ضمنی فعال است، اما می‌توان با شکل منفی آن یعنی \&\fB\-fno\-working\-directory\fR از آن جلوگیری کرد. اگر فلگ \fB\-P\fR در خط فرمان وجود داشته باشد، این گزینه هیچ تاثیری نخواهد داشت، زیرا اصلاً هیچ دستور هدایت‌کننده \f(CW\*(C`#line\*(C'\fR تولید نمی‌شود. .IP "\fB\-idirafter\fR \fIdir\fR" 4 .IX Item "-idirafter dir" دایرکتوری \fIdir\fR را برای فایل‌های include جستجو می‌کند، اما این کار پس از بررسی تمامی دایرکتوری‌های مشخص‌شده با \fB\-I\fR و دایرکتوری‌های استاندارد سیستم انجام می‌شود. با \fIdir\fR مانند یک پوشه include سیستمی رفتار می‌شود. اگر dir با \f(CW\*(C`=\*(C'\fR شروع شود، آن‌گاه \f(CW\*(C`=\*(C'\fR با پیشوند sysroot جایگزین می‌شود؛ به \fB\-\-sysroot\fR و \fB\-isysroot\fR مراجعه کنید. .IP "\fB\-imultilib\fR \fIdir\fR" 4 .IX Item "-imultilib dir" از \fIdir\fR به عنوان یک زیرپوشه از دایرکتوری حاوی سرآیندهای C++ مختص به معماری هدف استفاده می‌کند. .IP "\fB\-iprefix\fR \fIprefix\fR" 4 .IX Item "-iprefix prefix" مقدار \fIprefix\fR را به عنوان پیشوند برای گزینه‌های بعدی \fB\-iwithprefix\fR مشخص می‌کند. اگر \fIprefix\fR نشان‌دهنده یک دایرکتوری باشد، باید اسلش پایانی \f(CW\*(Aq/\*(Aq\fR را بگنجانید. .IP "\fB\-isysroot\fR \fIdir\fR" 4 .IX Item "-isysroot dir" این گزینه شبیه به گزینه \fB\-\-sysroot\fR است، اما تنها بر پرونده‌های سرآیند اعمال می‌شود. برای اطلاعات بیشتر به گزینه \fB\-\-sysroot\fR مراجعه کنید. .IP "\fB\-iquote\fR \fIdir\fR" 4 .IX Item "-iquote dir" پوشه \fIdir\fR را فقط برای فایل‌های سرآیندی که با \f(CW\*(C`#include "file"\*(C'\fR درخواست شده‌اند، پیش از تمام دایرکتوری‌های مشخص‌شده با \fB\-I\fR و پیش از دایرکتوری‌های استاندارد سیستم جستجو می‌کند؛ این پوشه برای \f(CW\*(C`#include \*(C'\fR جستجو نمی‌شود. اگر \&\fIdir\fR با \f(CW\*(C`=\*(C'\fR شروع شود، آن‌گاه علامت \f(CW\*(C`=\*(C'\fR با پیشوند sysroot جایگزین می‌شود؛ به \fB\-\-sysroot\fR و \fB\-isysroot\fR مراجعه کنید. .IP "\fB\-isystem\fR \fIdir\fR" 4 .IX Item "-isystem dir" دایرکتوری \fIdir\fR را برای فایل‌های سرآیند، پس از تمامی دایرکتوری‌های مشخص‌شده با \&\fB\-I\fR اما قبل از دایرکتوری‌های استاندارد سیستم جستجو می‌کند. آن را به عنوان یک دایرکتوری سیستمی علامت‌گذاری می‌کند تا همان رفتار ویژه‌ای که برای دایرکتوری‌های استاندارد سیستم اعمال می‌شود برای آن نیز اعمال گردد. اگر \fIdir\fR با \&\f(CW\*(C`=\*(C'\fR آغاز شود، \f(CW\*(C`=\*(C'\fR با پیشوند sysroot جایگزین می‌شود؛ به \fB\-\-sysroot\fR و \fB\-isysroot\fR مراجعه کنید. .IP \fB\-nostdinc\fR 4 .IX Item "-nostdinc" دایرکتوری‌های استاندارد سیستم را برای فایل‌های سرآیند جستجو نمی‌کند. تنها دایرکتوری‌هایی که با گزینه‌های \fB\-I\fR مشخص کرده‌اید (و در صورت مناسب بودن، پوشه فایل جاری) جستجو می‌شوند. .IP \fB\-undef\fR 4 .IX Item "-undef" هیچ‌یک از ماکروهای ویژه سیستم یا ویژه GCC را از پیش تعریف نمی‌کند. ماکروهای استاندارد از پیش تعریف‌شده همچنان تعریف‌شده باقی می‌مانند. .IP \fB\-A\fR\fIpredicate\fR\fB=\fR\fIanswer\fR 4 .IX Item "-Apredicate=answer" یک ادعا (assertion) با گزاره \fIpredicate\fR و پاسخ \fIanswer\fR ایجاد می‌کند. این قالب نسبت به قالب قدیمی‌تر \-A predicate(answer) که هنوز هم پشتیبانی می‌شود ترجیح داده می‌شود، زیرا از کاراکترهای ویژه شل استفاده نمی‌کند. .IP \fB\-A\-\fR\fIpredicate\fR\fB=\fR\fIanswer\fR 4 .IX Item "-A-predicate=answer" یک ادعا با گزاره \fIpredicate\fR و پاسخ \fIanswer\fR را لغو می‌کند. .IP \fB\-C\fR 4 .IX Item "-C" توضیحات (کامنت‌ها) را دور نیندازید. تمام کامنت‌ها به فایل خروجی فرستاده می‌شوند، به جز کامنت‌های موجود در دستورات پردازش‌شده، که به همراه خود دستور حذف می‌شوند. .Sp هنگام استفاده از \fB\-C\fR باید برای اثرات جانبی آماده باشید؛ این گزینه باعث می‌شود پیش‌پردازنده با کامنت‌ها به عنوان توکن‌های مستقل رفتار کند. به عنوان مثال، کامنت‌هایی که در ابتدای یک خط دستور هدایت‌کننده ظاهر می‌شوند، این اثر را دارند که آن خط را به یک خط کد منبع معمولی تبدیل کنند، زیرا اولین توکن روی خط دیگر \f(CW\*(Aq#\*(Aq\fR نیست. .Sp هشدار: این گزینه در حال حاضر فقط کامنت‌های به سبک C را مدیریت می‌کند. پیش‌پردازنده هنوز کامنت‌های به سبک فرترن را شناسایی نمی‌کند. .IP \fB\-CC\fR 4 .IX Item "-CC" توضیحات را دور نیندازید، از جمله در حین بسط ماکرو. این گزینه شبیه \&\fB\-C\fR است، به جز اینکه کامنت‌های درون ماکروها نیز به فایل خروجی که ماکرو در آن بسط می‌یابد منتقل می‌شوند. .Sp علاوه بر اثرات جانبی گزینه \fB\-C\fR، گزینه \fB\-CC\fR باعث می‌شود تمامی کامنت‌های به سبک C++ درون یک ماکرو به کامنت‌های به سبک C تبدیل شوند. این کار برای جلوگیری از آن است که استفاده بعدی از آن ماکرو به طور ناخواسته ادامه خط منبع را کامنت نکند. گزینه \fB\-CC\fR به طور کلی برای پشتیبانی از کامنت‌های ابزارهای lint استفاده می‌شود. .Sp هشدار: این گزینه در حال حاضر فقط کامنت‌های به سبک C و C++ را مدیریت می‌کند. پیش‌پردازنده هنوز کامنت‌های به سبک فرترن را شناسایی نمی‌کند. .IP \fB\-D\fR\fIname\fR 4 .IX Item "-Dname" نام \fIname\fR را به عنوان یک ماکرو با مقدار تعریف \f(CW1\fR از پیش تعریف می‌کند. .IP \fB\-D\fR\fIname\fR\fB=\fR\fIdefinition\fR 4 .IX Item "-Dname=definition" محتوای \fIdefinition\fR توکن‌بندی شده و طوری پردازش می‌شود که گویی در فاز سوم ترجمه در یک دستور هدایت‌کننده \f(CW\*(Aq#define\*(Aq\fR ظاهر شده است. به ویژه، تعریف توسط کاراکترهای خط جدید تعبیه‌شده بریده می‌شود. .Sp اگر پیش‌پردازنده را از یک شل یا برنامه‌ای شبیه شل فراخوانی می‌کنید، ممکن است لازم باشد از نحو نقل‌قول شل برای محافظت از کاراکترهایی مانند فاصله‌ها که در نحو شل دارای معنا هستند استفاده کنید. .Sp اگر می‌خواهید یک ماکروی شبه‌تابع را در خط فرمان تعریف کنید، فهرست آرگومان‌های آن را در پرانتز قبل از علامت مساوی (در صورت وجود) بنویسید. پرانتزها برای اکثر شل‌ها معنادار هستند، بنابراین باید گزینه را نقل‌قول کنید. در sh و csh، دستور \f(CW\*(C`\-D\*(Aqname(args...)=definition\*(Aq\*(C'\fR کار می‌کند. .Sp گزینه‌های \&\fB\-D\fR و \fB\-U\fR به ترتیبی که در خط فرمان داده شده‌اند پردازش می‌شوند. تمامی گزینه‌های \-imacros file و \-include file پس از تمامی گزینه‌های \-D و \-U پردازش می‌شوند. .IP \fB\-H\fR 4 .IX Item "-H" علاوه بر سایر فعالیت‌های عادی، نام هر فایل سرآیند استفاده‌شده را چاپ می‌کند. هر نام دندانه‌دار می‌شود تا عمق قرارگیری آن در پشته \f(CW\*(Aq#include\*(Aq\fR مشخص شود. .IP \fB\-P\fR 4 .IX Item "-P" از تولید نشانگرهای خط در خروجی پیش‌پردازنده جلوگیری می‌کند. این کار ممکن است هنگام اجرای پیش‌پردازنده روی کدی که کد C نیست و به برنامه‌ای ارسال می‌شود که شاید به خاطر نشانگرهای خط سردرگم شود، مفید باشد. .IP \fB\-U\fR\fIname\fR 4 .IX Item "-Uname" هرگونه تعریف قبلی از \fIname\fR، خواه توکار باشد یا با گزینه \fB\-D\fR ارائه شده باشد، را لغو می‌کند. .SS "گزینه‌های درخواست یا مهار خطاها و هشدارها (Options to request or suppress errors and warnings)" .IX Subsection "Options to request or suppress errors and warnings" خطاها پیام‌های تشخیصی هستند که گزارش می‌دهند کامپایلر GNU Fortran نمی‌تواند بخش مربوطه از کد منبع را کامپایل کند. کامپایلر به پردازش برنامه به منظور گزارش خطاهای بیشتر جهت کمک به اشکال‌زدایی ادامه می‌دهد، اما هیچ خروجی کامپایل‌شده‌ای تولید نمی‌کند. .PP هشدارها پیام‌های تشخیصی هستند که ساختارهایی را گزارش می‌دهند که ذاتاً اشتباه نیستند اما مخاطره‌آمیز بوده یا نشان‌دهنده احتمال وجود یک باگ در برنامه هستند. مگر اینکه \fB\-Werror\fR مشخص شده باشد، آن‌ها مانع کامپایل برنامه نمی‌شوند. .PP شما می‌توانید هشدارهای خاص متعددی را با گزینه‌هایی که با \fB\-W\fR شروع می‌شوند درخواست کنید، برای نمونه \fB\-Wimplicit\fR برای درخواست هشدار درباره اعلانات ضمنی. هر یک از این گزینه‌های هشدار خاص همچنین دارای یک فرم منفی هستند که با \fB\-Wno\-\fR شروع می‌شود تا هشدارها را خاموش کند؛ برای مثال، \fB\-Wno\-implicit\fR. این راهنما تنها یکی از دو فرم را فهرست می‌کند، هر کدام که پیش‌فرض نباشد. .PP این گزینه‌ها مقدار و انواع خطاها و هشدارهای تولیدشده توسط GNU Fortran را کنترل می‌کنند: .IP \fB\-fmax\-errors=\fR\fIn\fR 4 .IX Item "-fmax-errors=n" حداکثر تعداد پیام‌های خطا را به \fIn\fR محدود می‌کند، که در آن نقطه GNU Fortran به جای تلاش برای ادامه پردازش کد منبع متوقف می‌شود. اگر \fIn\fR برابر 0 باشد، هیچ محدودیتی روی تعداد پیام‌های خطای تولیدشده وجود ندارد. .IP \fB\-fsyntax\-only\fR 4 .IX Item "-fsyntax-only" کد را برای خطاهای نحوی بررسی می‌کند، اما عملاً آن را کامپایل نمی‌کند. این گزینه فایل‌های ماژول را برای هر ماژول موجود در کد تولید می‌کند، اما هیچ فایل خروجی دیگری تولید نمی‌کند. .IP \fB\-Wpedantic\fR 4 .IX Item "-Wpedantic" .PD 0 .IP \fB\-pedantic\fR 4 .IX Item "-pedantic" .PD هشدارهایی را برای استفاده از افزونه‌های فراتر از استاندارد فرترن صادر می‌کند. \&\fB\-pedantic\fR همچنین برای ساختارهای زبان C در جایی که در فایل‌های منبع GNU Fortran رخ می‌دهند اعمال می‌شود، مانند استفاده از \fB\ee\fR در یک ثابت کاراکتری درون هدایت‌کننده‌ای مانند \f(CW\*(C`#include\*(C'\fR. .Sp برنامه‌های معتبر فرترن باید با این گزینه یا بدون آن به درستی کامپایل شوند. با این حال، بدون این گزینه، افزونه‌های خاص گنو و ویژگی‌های سنتی فرترن نیز پشتیبانی می‌شوند. با این گزینه، بسیاری از آنها رد می‌شوند. .Sp برخی از کاربران تلاش می‌کنند از \fB\-pedantic\fR برای بررسی انطباق برنامه‌ها با استاندارد استفاده کنند. آنها به زودی درمی‌یابند که این گزینه دقیقاً آنچه را که می‌خواهند انجام نمی‌دهد\-\-\-برخی از رویه‌های غیر استاندارد را پیدا می‌کند، اما نه همه را. با این حال، از بهبودهای گنو فرترن در این زمینه استقبال می‌شود. .Sp این گزینه باید همراه با \fB\-std=f95\fR، \&\fB\-std=f2003\fR، \fB\-std=f2008\fR، \fB\-std=f2018\fR یا \fB\-std=f2023\fR استفاده شود. .IP \fB\-pedantic\-errors\fR 4 .IX Item "-pedantic-errors" مشابه \fB\-pedantic\fR، با این تفاوت که به جای هشدار، خطا تولید می‌شود. .IP \fB\-Wall\fR 4 .IX Item "-Wall" گزینه‌های هشدار متداولی را فعال می‌کند که مربوط به کاربردهایی هستند که ما اجتناب از آنها را توصیه می‌کنیم و معتقدیم که اجتناب از آنها آسان است. این مورد در حال حاضر شامل \fB\-Waliasing\fR، \fB\-Wampersand\fR، \&\fB\-Wconversion\fR، \fB\-Wsurprising\fR، \fB\-Wc\-binding\-type\fR، \&\fB\-Wintrinsics\-std\fR، \fB\-Wtabs\fR، \fB\-Wintrinsic\-shadow\fR، \&\fB\-Wline\-truncation\fR، \fB\-Wtarget\-lifetime\fR، \&\fB\-Winteger\-division\fR، \fB\-Wreal\-q\-constant\fR، \fB\-Wunused\fR و \fB\-Wundefined\-do\-loop\fR می‌شود. .IP \fB\-Waliasing\fR 4 .IX Item "-Waliasing" درباره نام مستعار احتمالی (aliasing) آرگومان‌های صوری هشدار می‌دهد. به طور خاص، اگر همان آرگومان واقعی در یک فراخوانی با یک رابط صریح با یک آرگومان صوری دارای \&\f(CWINTENT(IN)\fR و یک آرگومان صوری دارای \f(CWINTENT(OUT)\fR مرتبط شود، هشدار می‌دهد. .Sp مثال زیر باعث ایجاد این هشدار می‌شود. .Sp .Vb 7 \& interface \& subroutine bar(a,b) \& integer, intent(in) :: a \& integer, intent(out) :: b \& end subroutine \& end interface \& integer :: a \& \& call bar(a,a) .Ve .IP \fB\-Wampersand\fR 4 .IX Item "-Wampersand" درباره نبود کاراکتر امپرسند (&) در ثابت‌های کاراکتری ادامه‌یافته هشدار می‌دهد. این هشدار با \fB\-Wampersand\fR، \fB\-pedantic\fR، \&\fB\-std=f95\fR، \fB\-std=f2003\fR، \fB\-std=f2008\fR، \fB\-std=f2018\fR و \fB\-std=f2023\fR داده می‌شود. توجه: در صورت عدم وجود امپرسند در یک ثابت کاراکتری ادامه‌یافته، GNU Fortran فرض می‌کند که ادامه در اولین کاراکتر غیرتوضیحی و غیرفاصله‌ای پس از امپرسندی که ادامه را آغاز کرده است، رخ می‌دهد. .IP \fB\-Warray\-temporaries\fR 4 .IX Item "-Warray-temporaries" درباره آرایه‌های موقتی ایجادشده توسط کامپایلر هشدار می‌دهد. اطلاعات تولیدشده توسط این هشدار گاهی اوقات در بهینه‌سازی، به منظور اجتناب از چنین آرایه‌های موقتی، مفید است. .IP \fB\-Wc\-binding\-type\fR 4 .IX Item "-Wc-binding-type" اگر یک متغیر ممکن است با C سازگار و بین‌عملیاتی نباشد هشدار می‌دهد. به ویژه، اگر متغیر با استفاده از یک نوع ذاتی با گونه (kind) پیش‌فرض اعلان شده باشد به جای استفاده از یک پارامتر kind که برای قابلیت همکاری با C در ماژول ذاتی \f(CW\*(C`ISO_C_Binding\*(C'\fR تعریف شده است، هشدار می‌دهد. این گزینه توسط \&\fB\-Wall\fR به طور ضمنی اعمال می‌شود. .IP \fB\-Wcharacter\-truncation\fR 4 .IX Item "-Wcharacter-truncation" هنگامی که یک انتساب کاراکتری رشته اختصاص‌یافته را کوتاه می‌کند هشدار می‌دهد. .IP \fB\-Wline\-truncation\fR 4 .IX Item "-Wline-truncation" هنگامی که خطی از کد منبع کوتاه شود، هشدار می‌دهد. این گزینه توسط \fB\-Wall\fR به طور ضمنی اعمال می‌شود. برای کد منبع قالب‌آزاد (free-form)، پیش‌فرض \&\fB\-Werror=line\-truncation\fR است به طوری که کوتاه‌شدگی‌ها به عنوان خطا گزارش می‌شوند. .IP \fB\-Wconversion\fR 4 .IX Item "-Wconversion" درباره تبدیل‌های ضمنی که احتمالاً مقدار عبارت را پس از تبدیل تغییر می‌دهند هشدار می‌دهد. این گزینه به طور ضمنی توسط \fB\-Wall\fR اعمال می‌شود. .IP \fB\-Wconversion\-extra\fR 4 .IX Item "-Wconversion-extra" درباره تبدیل‌های ضمنی میان انواع و گونه‌های مختلف هشدار می‌دهد. این گزینه به طور ضمنی شامل \fB\-Wconversion\fR نمی‌شود. .IP \fB\-Wdeprecated\-openmp\fR 4 .IX Item "-Wdeprecated-openmp" درباره استفاده از کدهای منسوخ‌شده OpenMP هشدار می‌دهد. .IP \fB\-Wexternal\-argument\-mismatch\fR 4 .IX Item "-Wexternal-argument-mismatch" درباره عدم تطابق آرگومان برای رویه‌های خارجی صوری هشدار می‌دهد. این مورد به طور ضمنی توسط \fB\-fc\-prototypes\-external\fR اعمال می‌شود زیرا تولید یک رابط معتبر C23 در چنین حالتی امکان‌پذیر نیست. همچنین به طور ضمنی توسط \fB\-Wall\fR اعمال می‌شود. .IP \fB\-Wextra\fR 4 .IX Item "-Wextra" برخی از گزینه‌های هشدار را برای استفاده از ویژگی‌های زبانی که ممکن است مشکل‌ساز باشند فعال می‌کند. این مورد در حال حاضر شامل \fB\-Wcompare\-reals\fR، \&\fB\-Wunused\-parameter\fR و \fB\-Wdo\-subscript\fR می‌شود. .IP \fB\-Wfrontend\-loop\-interchange\fR 4 .IX Item "-Wfrontend-loop-interchange" هنگام استفاده از \fB\-ffrontend\-loop\-interchange\fR برای انجام جابه‌جایی حلقه هشدار می‌دهد. .IP \fB\-Wimplicit\-interface\fR 4 .IX Item "-Wimplicit-interface" اگر رویه‌ای بدون یک رابط صریح فراخوانی شود، هشدار می‌دهد. توجه داشته باشید که این گزینه فقط وجود یک رابط صریح را بررسی می‌کند. این گزینه بررسی نمی‌کند که آیا رابط‌های اعلان‌شده در میان واحدهای برنامه سازگار هستند یا خیر. .IP \fB\-Wimplicit\-procedure\fR 4 .IX Item "-Wimplicit-procedure" اگر رویه‌ای فراخوانی شود که نه دارای یک رابط صریح است و نه به عنوان \f(CW\*(C`EXTERNAL\*(C'\fR اعلان شده است، هشدار می‌دهد. .IP \fB\-Winteger\-division\fR 4 .IX Item "-Winteger-division" اگر تقسیم اعداد صحیح ثابت نتیجه خود را کوتاه (گرد رو به پایین) کند، هشدار می‌دهد. به عنوان مثال، 3/5 مقدار 0 را ارزیابی می‌کند. .IP \fB\-Wintrinsics\-std\fR 4 .IX Item "-Wintrinsics-std" اگر \fBgfortran\fR رویه‌ای با نام مشابه یک تابع یا رویه ذاتی که در استاندارد در حال حاضر انتخاب‌شده (با \fB\-std\fR) در دسترس نیست پیدا کند و به همین دلیل با آن به عنوان یک رویه \f(CW\*(C`EXTERNAL\*(C'\fR رفتار کند، هشدار می‌دهد. \fB\-fall\-intrinsics\fR می‌تواند برای رخ ندادن این رفتار و پیوند همیشگی به تابع ذاتی صرف‌نظر از استاندارد انتخاب‌شده استفاده شود. .IP \fB\-Wno\-overwrite\-recursive\fR 4 .IX Item "-Wno-overwrite-recursive" هنگامی که \fB\-fno\-automatic\fR همراه با \fB\-frecursive\fR استفاده می‌شود هشدار نمی‌دهد. بازگشت در صورتی که متغیرهای محلی مربوطه ویژگی \f(CW\*(C`AUTOMATIC\*(C'\fR را به صراحت اعلان نکرده باشند، دچار اختلال می‌شود. این گزینه می‌تواند برای مهار هشدار در زمانی که مشخص است بازگشت دچار اختلال نمی‌شود استفاده شود. برای محیط‌های ساختی که از \fB\-Werror\fR استفاده می‌کنند مفید است. .IP \fB\-Wreal\-q\-constant\fR 4 .IX Item "-Wreal-q-constant" اگر یک ثابت لفظی حقیقی (real-literal-constant) شامل حرف توان \f(CW\*(C`q\*(C'\fR باشد، یک هشدار تولید می‌کند. .IP \fB\-Wsurprising\fR 4 .IX Item "-Wsurprising" هنگامی که ساختارهای کد "مشکوک" مشاهده می‌شوند، یک هشدار تولید می‌کند. اگرچه از نظر فنی مجاز هستند، اما معمولاً نشان می‌دهند که خطایی رخ داده است. .Sp این گزینه در حال حاضر تحت شرایط زیر هشدار تولید می‌کند: .RS 4 .IP * 4 یک ساختار \f(CW\*(C`SELECT CASE\*(C'\fR از نوع \f(CW\*(C`INTEGER\*(C'\fR دارای یک \f(CW\*(C`CASE\*(C'\fR است که هرگز نمی‌تواند مطابقت یابد زیرا مقدار پایین آن بزرگتر از مقدار بالای آن است. .IP * 4 یک ساختار \f(CW\*(C`SELECT CASE\*(C'\fR از نوع \f(CW\*(C`LOGICAL\*(C'\fR دارای سه عبارت \f(CW\*(C`CASE\*(C'\fR است. .IP * 4 یک \f(CW\*(C`TRANSFER\*(C'\fR مبدئی را مشخص می‌کند که کوتاه‌تر از مقصد است. .IP * 4 نوع نتیجه یک تابع بیش از یک بار با همان نوع اعلان شده است. اگر \&\fB\-pedantic\fR یا حالت منطبق بر استاندارد فعال باشد، این یک خطا است. .IP * 4 یک متغیر \f(CW\*(C`CHARACTER\*(C'\fR با طول منفی اعلان شده است. .IP * 4 همراه با \fB\-fopenmp\fR، برای کد منبع قالب‌ثابت، زمانی که یک دیده‌بان (sentinel) افزونه اختصاصی توزیع‌کننده \f(CW\*(C`omx\*(C'\fR مشاهده شود. (معادل \f(CW\*(C`ompx\*(C'\fR، که در کد منبع قالب‌آزاد استفاده می‌شود، به طور پیش‌فرض تشخیص داده می‌شود.) .IP * 4 همراه با \fB\-fopenacc\fR، هنگام استفاده از ثابت‌های نام‌گذاری‌شده با بندهایی که یک متغیر می‌گیرند، زیرا انجام این کار هیچ تاثیری ندارد. .RE .RS 4 .RE .IP \fB\-Wtabs\fR 4 .IX Item "-Wtabs" به طور پیش‌فرض، تب‌ها به عنوان فضای خالی پذیرفته می‌شوند، اما تب‌ها عضو مجموعه کاراکترهای فرترن نیستند. برای خطوط ادامه، یک تب و به دنبال آن یک رقم بین 1 تا 9 پشتیبانی می‌شود. \fB\-Wtabs\fR باعث می‌شود در صورت برخورد با تب، هشدار صادر شود. توجه داشته باشید که \fB\-Wtabs\fR برای \fB\-pedantic\fR، \fB\-std=f95\fR، \fB\-std=f2003\fR، \&\fB\-std=f2008\fR، \fB\-std=f2018\fR، \fB\-std=f2023\fR و \&\fB\-Wall\fR فعال است. .IP \fB\-Wundefined\-do\-loop\fR 4 .IX Item "-Wundefined-do-loop" اگر یک حلقه \f(CW\*(C`DO\*(C'\fR با گام 1 یا \-1 منجر به زیرریز یا سرریز در حین تکرار متغیر القایی حلقه شود، هشدار می‌دهد. این گزینه به طور ضمنی توسط \fB\-Wall\fR اعمال می‌شود. .IP \fB\-Wunderflow\fR 4 .IX Item "-Wunderflow" هنگامی که عبارات ثابت عددی که منجر به زیرریز می‌شوند در طول کامپایل مشاهده شوند، هشدار تولید می‌کند. به طور پیش‌فرض فعال است. .IP \fB\-Wintrinsic\-shadow\fR 4 .IX Item "-Wintrinsic-shadow" اگر یک رویه تعریف‌شده توسط کاربر یا رویه ماژول هم‌نام با یک تابع یا رویه ذاتی باشد هشدار می‌دهد؛ در این حالت، ممکن است یک رابط صریح یا اعلان \f(CW\*(C`EXTERNAL\*(C'\fR یا \&\f(CW\*(C`INTRINSIC\*(C'\fR نیاز باشد تا فراخوانی‌ها بعداً به تابع ذاتی/رویه مورد نظر حل و مرتبط شوند. این گزینه به طور ضمنی توسط \fB\-Wall\fR اعمال می‌شود. .IP \fB\-Wuse\-without\-only\fR 4 .IX Item "-Wuse-without-only" اگر عبارت \f(CW\*(C`USE\*(C'\fR فاقد توصیف‌کننده \f(CW\*(C`ONLY\*(C'\fR باشد و در نتیجه تمام موجودیت‌های عمومی ماژول استفاده‌شده را به طور ضمنی وارد کند، هشدار می‌دهد. .IP \fB\-Wunused\-dummy\-argument\fR 4 .IX Item "-Wunused-dummy-argument" درباره آرگومان‌های صوری استفاده‌نشده هشدار می‌دهد. این گزینه به طور ضمنی توسط \fB\-Wall\fR اعمال می‌شود. .IP \fB\-Wunused\-parameter\fR 4 .IX Item "-Wunused-parameter" برخلاف مفهوم \fBgcc\fR از \fB\-Wunused\-parameter\fR، پیاده‌سازی \&\fBgfortran\fR از این گزینه درباره آرگومان‌های صوری استفاده‌نشده هشدار نمی‌دهد (گزینه \fB\-Wunused\-dummy\-argument\fR را ببینید)، بلکه درباره مقادیر \f(CW\*(C`PARAMETER\*(C'\fR استفاده‌نشده هشدار می‌دهد. \fB\-Wunused\-parameter\fR در صورتی که \fB\-Wunused\fR یا \fB\-Wall\fR نیز استفاده شده باشد، به طور ضمنی توسط \fB\-Wextra\fR اعمال می‌شود. .IP \fB\-Walign\-commons\fR 4 .IX Item "-Walign-commons" به طور پیش‌فرض، \fBgfortran\fR درباره هر مورد از افزودن لایه فاصله‌گذاری به متغیرها برای تراز مناسب در داخل یک بلوک \f(CW\*(C`COMMON\*(C'\fR هشدار می‌دهد. این هشدار می‌تواند از طریق \&\fB\-Wno\-align\-commons\fR خاموش شود. همچنین گزینه \fB\-falign\-commons\fR را ببینید. .IP \fB\-Wfunction\-elimination\fR 4 .IX Item "-Wfunction-elimination" اگر هر گونه فراخوانی به توابع ناخالص توسط بهینه‌سازی‌های فعال‌شده با گزینه \fB\-ffrontend\-optimize\fR حذف شود، هشدار می‌دهد. این گزینه به طور ضمنی توسط \fB\-Wextra\fR اعمال می‌شود. .IP \fB\-Wrealloc\-lhs\fR 4 .IX Item "-Wrealloc-lhs" هنگامی که کامپایلر ممکن است کدی را برای تخصیص یا تخصیص مجدد یک متغیر آرایه تخصیص‌پذیر از نوع ذاتی در انتساب‌های ذاتی درج کند، هشدار می‌دهد. در حلقه‌های پرتکرار (داغ)، قابلیت تخصیص مجدد فرترن 2003 ممکن است کارایی را کاهش دهد. اگر آرایه از قبل با شکل صحیح تخصیص داده شده است، استفاده از مشخصه کل-آرایه (مانند \f(CW\*(C`(:,:,:)\*(C'\fR) را برای متغیر در سمت چپ در نظر بگیرید تا از بررسی تخصیص مجدد جلوگیری شود. توجه داشته باشید که در برخی موارد هشدار نشان داده می‌شود، حتی اگر کامپایلر بررسی‌های تخصیص مجدد را با بهینه‌سازی حذف کند؛ برای نمونه، زمانی که سمت راست شامل همان متغیر ضرب‌شده در یک اسکالر باشد. همچنین گزینه \fB\-frealloc\-lhs\fR را ببینید. .IP \fB\-Wrealloc\-lhs\-all\fR 4 .IX Item "-Wrealloc-lhs-all" هنگامی که کامپایلر کدی را برای تخصیص یا تخصیص مجدد یک متغیر تخصیص‌پذیر درج می‌کند هشدار می‌دهد؛ این شامل مقادیر اسکالر و انواع مشتق‌شده می‌شود. .IP \fB\-Wcompare\-reals\fR 4 .IX Item "-Wcompare-reals" هنگام مقایسه انواع حقیقی یا مختلط برای برابری یا نابرابری هشدار می‌دهد. این گزینه به طور ضمنی توسط \fB\-Wextra\fR اعمال می‌شود. .IP \fB\-Wtarget\-lifetime\fR 4 .IX Item "-Wtarget-lifetime" اگر طول عمر اشاره‌گر در یک انتساب اشاره‌گر ممکن است طولانی‌تر از هدف آن باشد، هشدار می‌دهد. این گزینه به طور ضمنی توسط \fB\-Wall\fR اعمال می‌شود. .IP \fB\-Wzerotrip\fR 4 .IX Item "-Wzerotrip" اگر مشخص باشد که یک حلقه \f(CW\*(C`DO\*(C'\fR در زمان کامپایل صفر بار اجرا می‌شود، هشدار می‌دهد. این گزینه به طور ضمنی توسط \fB\-Wall\fR اعمال می‌شود. .IP \fB\-Wdo\-subscript\fR 4 .IX Item "-Wdo-subscript" اگر یک شاخص آرایه در داخل یک حلقه \f(CW\*(C`DO\*(C'\fR بتواند منجر به دسترسی خارج از محدوده شود، حتی اگر کامپایلر نتواند اثبات کند که عبارت واقعاً اجرا می‌شود، هشدار می‌دهد؛ در مواردی مانند .Sp .Vb 6 \& real a(3) \& do i=1,4 \& if (condition(i)) then \& a(i) = 1.2 \& end if \& end do .Ve .Sp این گزینه به طور ضمنی توسط \fB\-Wextra\fR اعمال می‌شود. .IP \fB\-Werror\fR 4 .IX Item "-Werror" همه هشدارها را به خطا تبدیل می‌کند. .PP برخی از این گزینه‌ها هنگام کامپایل برنامه‌های نوشته‌شده به فرترن هیچ تاثیری ندارند. .SS "گزینههای اشکالزدایی برنامه شما (Options for debugging your program)" .IX Subsection "Options for debugging your program" گنو فرترن گزینه‌های ویژه گوناگونی دارد که برای اشکال‌زدایی برنامه شما استفاده می‌شوند. .IP \fB\-fdebug\-aux\-vars\fR 4 .IX Item "-fdebug-aux-vars" متغیرهای داخلی ایجادشده توسط فرانت‌اند gfortran را تغییر نام می‌دهد و دسترسی به آن‌ها را برای یک اشکال‌زدا فراهم می‌سازد. در این حالت نام متغیرهای داخلی با حروف بزرگ و به دنبال آن یک زیرخط (underscore) آغاز می‌شود. این گزینه برای اشکال‌زدایی تولید کد کامپایلر همراه با \&\f(CW\*(C`\-fdump\-tree\-original\*(C'\fR و همچنین فعال‌سازی اشکال‌زدایی برنامه اجرایی با استفاده از \f(CW\*(C`\-g\*(C'\fR یا \f(CW\*(C`\-ggdb3\*(C'\fR مفید است. .IP \fB\-ffpe\-trap=\fR\fIlist\fR 4 .IX Item "-ffpe-trap=list" فهرستی از تله‌های استثنای ممیز شناور را برای فعال‌سازی تعیین می‌کند. در بیشتر سیستم‌ها، چنانچه یک استثنای ممیز شناور رخ دهد و تله مربوط به آن فعال باشد، یک سیگنال \f(CW\*(C`SIGFPE\*(C'\fR ارسال شده و اجرای برنامه با تولید یک فایل core متوقف می‌گردد که برای اشکال‌زدایی سودمند است. \fIlist\fR فهرستی (احتمالاً خالی) جداشده با کاما از \fBnone\fR (برای پاک کردن تمام استثناهایی که باید به دام بیفتند)، یا از استثناهای زیر است: \fBinvalid\fR (عملیات نامعتبر ممیز شناور، مانند \&\f(CWSQRT(\-1.0)\fR)، \fBzero\fR (تقسیم بر صفر)، \fBoverflow\fR (سرریز در عملیات ممیز شناور)، \fBunderflow\fR (زیرریز در عملیات ممیز شناور)، \fBinexact\fR (از دست رفتن دقت در طول عملیات)، و \fBdenormal\fR (عملیات روی یک مقدار غیرعادی یا نامتعارف). پنج استثنای نخست متناظر با پنج استثنای استاندارد IEEE 754 هستند، در حالی که مورد آخر (\fBdenormal\fR) بخشی از استاندارد IEEE 754 نیست اما در برخی معماری‌های رایج مانند x86 موجود است. .Sp سه استثنای نخست (\fBinvalid\fR، \fBzero\fR، و \&\fBoverflow\fR) اغلب نشان‌دهنده خطاهای جدی هستند، و مگر اینکه برنامه تدابیری برای مدیریت این استثناها داشته باشد، فعال‌سازی تله‌ها برای این سه استثنا احتمالاً ایده خوبی است. .Sp اگر این گزینه بیش از یک بار در خط فرمان استفاده شود، فهرست‌ها با هم ترکیب می‌شوند: \*(Aq\f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist1\fR \f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist2\fR\*(Aq معادل \f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist1\fR,\fIlist2\fR است. .Sp توجه داشته باشید که یک استثنا پس از فعال شدن غیرفعال نمی‌شود (شکل منفی وجود ندارد)، مگر با پاک کردن تمام تله‌ها از طریق تعیین \fBnone\fR. .Sp بسیاری از عملیات‌های ممیز شناور، اگر نگوییم اکثر آن‌ها، به دلیل گرد کردن با کاهش دقت همراه هستند، و از این رو \f(CW\*(C`ffpe\-trap=inexact\*(C'\fR احتمالاً در عمل چندان جالب توجه نخواهد بود. .Sp به‌طور پیش‌فرض هیچ تله استثنایی فعال نیست. .IP \fB\-ffpe\-summary=\fR\fIlist\fR 4 .IX Item "-ffpe-summary=list" فهرستی از استثناهای ممیز شناور را مشخص می‌کند که وضعیت پرچم آن‌ها هنگام فراخوانی \f(CW\*(C`STOP\*(C'\fR و \f(CW\*(C`ERROR STOP\*(C'\fR در \f(CW\*(C`ERROR_UNIT\*(C'\fR چاپ می‌شود. \&\fIlist\fR می‌تواند \fBnone\fR، \fBall\fR یا فهرستی جداشده با کاما از استثناهای زیر باشد: \fBinvalid\fR، \fBzero\fR، \fBoverflow\fR، \&\fBunderflow\fR، \fBinexact\fR و \fBdenormal\fR. (برای توضیحات مربوط به استثناها به \&\fB\-ffpe\-trap\fR مراجعه کنید.) .Sp اگر این گزینه بیش از یک بار در خط فرمان استفاده شود، فقط آخرین مورد اعمال می‌شود. .Sp به‌طور پیش‌فرض، خلاصه‌ای برای تمام استثناها به جز \fBinexact\fR نمایش داده می‌شود. .IP \fB\-fno\-backtrace\fR 4 .IX Item "-fno-backtrace" هنگامی که یک خطای جدی زمان اجرا رخ می‌دهد یا یک سیگنال مرگبار ارسال می‌شود (خطای بخش‌بندی، دستور نامعتبر، خطای گذرگاه، استثنای ممیز شناور، و سایر سیگنال‌های POSIX که دارای کنش \fBcore\fR هستند)، کتابخانه زمان اجرای فرترن تلاش می‌کند تا ردگیری به عقب (backtrace) مربوط به خطا را چاپ کند. \f(CW\*(C`\-fno\-backtrace\*(C'\fR تولید ردگیری به عقب را غیرفعال می‌کند. این گزینه فقط بر کامپایل برنامه اصلی فرترن تأثیر دارد. .SS "گزینههای جستجوی دایرکتوری (Options for directory search)" .IX Subsection "Options for directory search" این گزینه‌ها بر نحوه جستجوی گنو فرترن برای فایل‌های مشخص‌شده توسط دستورالعمل \f(CW\*(C`INCLUDE\*(C'\fR و محل جستجوی آن برای ماژول‌های قبلاً کامپایل‌شده تأثیر می‌گذارند. .PP این موارد همچنین بر مسیرهای جستجوی استفاده‌شده توسط \fBcpp\fR هنگام پیش‌پردازش سورس فرترن تأثیر می‌گذارند. .IP \fB\-I\fR\fIdir\fR 4 .IX Item "-Idir" بر تفسیر دستورالعمل \f(CW\*(C`INCLUDE\*(C'\fR (و همچنین دستورالعمل \f(CW\*(C`#include\*(C'\fR پیش‌پردازنده \fBcpp\fR) تأثیر می‌گذارد. .Sp همچنین توجه داشته باشید که رفتار کلی \fB\-I\fR و \&\f(CW\*(C`INCLUDE\*(C'\fR از لحاظ جستجو برای فایل‌های \fIheader.gcc\fR و موارد مشابه دیگر، تا حد زیادی همانند \fB\-I\fR با \&\f(CW\*(C`#include\*(C'\fR در پیش‌پردازنده \fBcpp\fR است. .Sp این مسیر همچنین برای جستجوی فایل‌های \fI.mod\fR هنگامی که ماژول‌های قبلاً کامپایل‌شده توسط گزاره \f(CW\*(C`USE\*(C'\fR مورد نیاز باشند، استفاده می‌شود. .IP \fB\-J\fR\fIdir\fR 4 .IX Item "-Jdir" این گزینه محل قرارگیری فایل‌های \fI.mod\fR مربوط به ماژول‌های کامپایل‌شده را مشخص می‌کند. همچنین به فهرست دایرکتوری‌هایی که توسط گزاره \f(CW\*(C`USE\*(C'\fR جستجو می‌شوند اضافه می‌شود. .Sp مقدار پیش‌فرض، دایرکتوری جاری است. .IP "\fB\-fintrinsic\-modules\-path\fR \fIdir\fR" 4 .IX Item "-fintrinsic-modules-path dir" این گزینه مکان ماژول‌های ذاتی (intrinsic) از پیش کامپایل‌شده را در صورتی که در مکان پیش‌فرض مورد انتظار کامپایلر نباشند، مشخص می‌کند. .SS "تاثیرگذاری بر مرحله پیوند (Influencing the linking step)" .IX Subsection "Influencing the linking step" این گزینه‌ها زمانی وارد عمل می‌شوند که کامپایلر فایل‌های شیء (object files) را به یک فایل خروجی قابل اجرا پیوند می‌دهد. اگر کامپایلر مرحله پیوند را انجام ندهد، این گزینه‌ها بی‌معنی هستند. .IP \fB\-static\-libgfortran\fR 4 .IX Item "-static-libgfortran" در سیستم‌هایی که \fIlibgfortran\fR را هم به عنوان یک کتابخانه اشتراکی و هم یک کتابخانه ایستا ارائه می‌دهند، این گزینه استفاده از نسخه ایستا (static) را اجبار می‌کند. اگر هنگام پیکربندی کامپایلر هیچ نسخه اشتراکی از \fIlibgfortran\fR ساخته نشده باشد، این گزینه تأثیری ندارد. .IP \fB\-static\-libquadmath\fR 4 .IX Item "-static-libquadmath" در سیستم‌هایی که \fIlibquadmath\fR را هم به عنوان یک کتابخانه اشتراکی و هم یک کتابخانه ایستا ارائه می‌دهند، این گزینه استفاده از نسخه ایستا (static) را اجبار می‌کند. اگر هنگام پیکربندی کامپایلر هیچ نسخه اشتراکی از \fIlibquadmath\fR ساخته نشده باشد، این گزینه هیچ تأثیری ندارد. .Sp لطفاً توجه داشته باشید که کتابخانه زمان اجرای \fIlibquadmath\fR تحت مجوز گنو کمتر جامع همگانی (LGPL) منتشر شده است، و پیوند دادن ایستا (استاتیک) به آن، الزاماتی را هنگام بازتوزیع فایل‌های باینری حاصل ایجاد می‌کند. .SS "تاثیرگذاری بر رفتار زمان اجرا (Influencing runtime behavior)" .IX Subsection "Influencing runtime behavior" این گزینه‌ها بر رفتار زمان اجرای برنامه‌های کامپایل‌شده با گنو فرترن تأثیر می‌گذارند. .IP \fB\-fconvert=\fR\fIconversion\fR 4 .IX Item "-fconvert=conversion" نمایش داده‌ها را برای فایل‌های قالب‌بندی‌نشده (unformatted) مشخص می‌کند. مقادیر معتبر برای تبدیل در بیشتر سیستم‌ها عبارتند از: \fBnative\fR، حالت پیش‌فرض؛ \&\fBswap\fR، جابجایی بین big-endian و little-endian؛ \fBbig\-endian\fR، استفاده از بازنمایی big-endian برای فایل‌های قالب‌بندی‌نشده؛ \fBlittle\-endian\fR، استفاده از بازنمایی little-endian برای فایل‌های قالب‌بندی‌نشده. .Sp در سیستم‌های POWER که از \fB\-mabi=ieeelongdouble\fR پشتیبانی می‌کنند، گزینه‌های بیشتری وجود دارند که می‌توانند با کاما با دیگر گزینه‌ها ترکیب شوند. این گزینه‌ها عبارتند از: .RS 4 .ie n .IP "\fB\-fconvert=r16_ieee\fR" 4 .el .IP "\fB\-fconvert=r16_ieee\fR" 4 .IX Item "-fconvert=r16_ieee" استفاده از قالب ۱۲۸\-بیتی IEEE برای \&\f(CWREAL(KIND=16)\fR. .ie n .IP "\fB\-fconvert=r16_ibm\fR" 4 .el .IP "\fB\-fconvert=r16_ibm\fR" 4 .IX Item "-fconvert=r16_ibm" استفاده از قالب long double شرکت IBM برای \&\f(CWREAL(KIND=16)\fR. .RE .RS 4 .Sp این گزینه تنها زمانی تأثیر دارد که در برنامه اصلی استفاده شود. تعیین‌کننده \f(CW\*(C`CONVERT\*(C'\fR و متغیر محیطی \fBGFORTRAN_CONVERT_UNIT\fR مقدار پیش‌فرض مشخص‌شده توسط \fB\-fconvert\fR را نادیده می‌گیرند (override می‌کنند). .RE .IP \fB\-frecord\-marker=\fR\fIlength\fR 4 .IX Item "-frecord-marker=length" طول نشانگرهای رکورد را برای فایل‌های قالب‌بندی‌نشده مشخص می‌کند. مقادیر معتبر برای \fIlength\fR برابر ۴ و ۸ هستند. مقدار پیش‌فرض ۴ است. \&\fIاین با نسخه‌های قبلی\fR \fBgfortran\fR \fIمتفاوت است\fR، که طول پیش‌فرض نشانگر رکورد را در اکثر سیستم‌ها ۸ تعیین می‌کردند. اگر می‌خواهید فایل‌هایی سازگار با نسخه‌های قبلی \fBgfortran\fR بخوانید یا بنویسید، از \fB\-frecord\-marker=8\fR استفاده کنید. .IP \fB\-fmax\-subrecord\-length=\fR\fIlength\fR 4 .IX Item "-fmax-subrecord-length=length" حداکثر طول یک زیررکورد را مشخص می‌کند. حداکثر مقدار مجاز برای length برابر 2147483639 است که مقدار پیش‌فرض نیز می‌باشد. این گزینه تنها برای استفاده توسط مجموعه آزمون‌های (testsuite) کامپایلر gfortran کاربرد واقعی دارد. .IP \fB\-fsign\-zero\fR 4 .IX Item "-fsign-zero" هنگامی که فعال باشد، اعداد ممیز شناور با مقدار صفر که بیت علامت آن‌ها تنظیم شده است، در خروجی قالب‌بندی‌شده به عنوان عدد منفی نوشته می‌شوند و در تابع ذاتی \f(CW\*(C`SIGN\*(C'\fR به عنوان عدد منفی در نظر گرفته می‌شوند. \fB\-fno\-sign\-zero\fR علامت منفی مقادیر صفر (یا مقادیر گردشده به صفر برای ورودی/خروجی) را چاپ نمی‌کند و برای سازگاری با Fortran 77، صفر را در تابع ذاتی \f(CW\*(C`SIGN\*(C'\fR یک عدد مثبت در نظر می‌گیرد. مقدار پیش‌فرض \fB\-fsign\-zero\fR است. .SS "گزینههای توسعهدهندگان فرترن گنو (GNU Fortran Developer Options)" .IX Subsection "GNU Fortran Developer Options" گنو فرترن دارای گزینه‌های ویژه گوناگونی است که برای اشکال‌زدایی کامپایلر گنو فرترن استفاده می‌شوند. .IP \fB\-fdump\-fortran\-global\fR 4 .IX Item "-fdump-fortran-global" فهرستی از شناسه‌های سراسری را پس از ترجمه به بازنمایی میان‌فرجام (middle-end) در خروجی تولید می‌کند. بیشتر برای اشکال‌زدایی خود کامپایلر گنو فرترن مفید است. خروجی تولیدشده توسط این گزینه ممکن است بین نسخه‌ها تغییر کند. همچنین این گزینه ممکن است برای ویژگی‌هایی که به تازگی افزوده شده‌اند خطاهای داخلی کامپایلر ایجاد نماید. .IP \fB\-fdump\-fortran\-optimized\fR 4 .IX Item "-fdump-fortran-optimized" درخت تجزیه (parse tree) را پس از بهینه‌سازی پیش‌فرجام (front-end) در خروجی چاپ می‌کند. عمدتاً برای اشکال‌زدایی خود کامپایلر گنو فرترن کاربرد دارد. خروجی تولیدشده توسط این گزینه ممکن است در نسخه‌های مختلف تغییر کند. همچنین این گزینه ممکن است برای ویژگی‌هایی که به تازگی اضافه شده‌اند، خطای داخلی کامپایلر ایجاد کند. .IP \fB\-fdump\-fortran\-original\fR 4 .IX Item "-fdump-fortran-original" درخت تجزیه داخلی را پس از ترجمه برنامه مبدأ به بازنمایی داخلی در خروجی چاپ می‌کند. این گزینه عمدتاً برای اشکال‌زدایی خود کامپایلر گنو فرترن مفید است. خروجی تولیدشده ممکن است بین نسخه‌ها تغییر کند. این گزینه همچنین ممکن است برای قابلیت‌هایی که اخیراً افزوده شده‌اند خطای داخلی کامپایلر ایجاد نماید. .IP \fB\-fdump\-parse\-tree\fR 4 .IX Item "-fdump-parse-tree" درخت تجزیه داخلی را پس از ترجمه برنامه مبدأ به بازنمایی داخلی در خروجی چاپ می‌کند. بیشتر برای اشکال‌زدایی خود کامپایلر گنو فرترن سودمند است. خروجی تولیدشده با این گزینه ممکن است میان نسخه‌های مختلف تغییر کند. همچنین این گزینه ممکن است برای قابلیت‌هایی که به تازگی اضافه شده‌اند باعث خطای داخلی کامپایلر شود. این گزینه منسوخ شده است؛ به جای آن از \f(CW\*(C`\-fdump\-fortran\-original\*(C'\fR استفاده کنید. .IP \fB\-save\-temps\fR 4 .IX Item "-save-temps" فایل‌های میانی معمولاً «موقت» را به طور دائمی ذخیره می‌کند؛ آن‌ها را همان‌طور که تحت \&\fB\-dumpbase\fR و \fB\-dumpdir\fR در GCC شرح داده شده، به عنوان فایل‌های خروجی کمکی نام‌گذاری می‌کند. .Sp .Vb 1 \& gfortran \-save\-temps \-c foo.F90 .Ve .Sp فایل ورودی \fIfoo.F90\fR را به \fIfoo.fii\fR پیش‌پردازش می‌کند، به فایل میانی \fIfoo.s\fR کامپایل می‌نماید، و سپس به فایل خروجی (ضمنی) \fIfoo.o\fR اسمبل می‌کند؛ در حالی که: .Sp .Vb 1 \& gfortran \-save\-temps \-S foo.F .Ve .Sp خروجی پیش‌پردازنده را در \fIfoo.fi\fR ذخیره می‌کند، و سپس به فایل خروجی (ضمنی) \fIfoo.s\fR کامپایل می‌نماید. .SS "گزینه‌های مربوط به قراردادهای تولید کد (Options for code generation conventions)" .IX Subsection "Options for code generation conventions" این گزینه‌های مستقل از معماری (machine\-independent)، قراردادهای رابط مورد استفاده در تولید کد را کنترل می‌کنند. .PP بیشتر این گزینه‌ها دارای هر دو شکل مثبت و منفی هستند؛ شکل منفی \fB\-ffoo\fR به‌صورت \fB\-fno\-foo\fR خواهد بود. در جدول زیر، تنها یکی از شکل‌ها فهرست شده است\-\-\-شکلی که پیش‌فرض نیست. شما می‌توانید شکل دیگر را با حذف یا افزودن \fBno\-\fR مشخص کنید. .IP \fB\-fno\-automatic\fR 4 .IX Item "-fno-automatic" با هر واحد برنامه (به‌جز مواردی که با \f(CW\*(C`RECURSIVE\*(C'\fR مشخص شده‌اند) طوری رفتار می‌کند که گویی دستور \&\f(CW\*(C`SAVE\*(C'\fR برای تمام متغیرهای محلی و آرایه‌های ارجاع‌شده در آن مشخص شده است. این گزینه بر بلوک‌های عمومی (common blocks) تأثیری ندارد. (برخی کامپایلرهای فرترن این گزینه را تحت نام \fB\-static\fR یا \fB\-save\fR ارائه می‌دهند.) حالت پیش‌فرض که \fB\-fautomatic\fR است، از پشته (stack) برای متغیرهای محلی کوچک‌تر از مقدار تعیین‌شده توسط \fB\-fmax\-stack\-var\-size\fR استفاده می‌کند. برای عدم استفاده از حافظه استاتیک از گزینهٔ \fB\-frecursive\fR استفاده کنید. .Sp متغیرهای محلی یا آرایه‌های دارای ویژگی صریح \f(CW\*(C`SAVE\*(C'\fR بدون اخطار نادیده گرفته می‌شوند مگر اینکه گزینهٔ \fB\-pedantic\fR اضافه شده باشد. .IP \fB\-ff2c\fR 4 .IX Item "-ff2c" تولید کدی که برای سازگاری با کد تولیدشده توسط \fBg77\fR و \fBf2c\fR طراحی شده است. .Sp قراردادهای فراخوانی مورد استفاده توسط \fBg77\fR (که در اصل در \fBf2c\fR پیاده‌سازی شده بود) ایجاب می‌کند توابعی که نوع پیش‌فرض \f(CW\*(C`REAL\*(C'\fR را برمی‌گردانند در واقع نوع \f(CW\*(C`double\*(C'\fR زبان C را بازگردانند، و توابعی که نوع \f(CW\*(C`COMPLEX\*(C'\fR را برمی‌گردانند مقادیر را از طریق یک آرگومان اضافی در دنبالهٔ فراخوانی که به محل ذخیرهٔ مقدار بازگشتی اشاره می‌کند، برگردانند. طبق قراردادهای فراخوانی پیش‌فرض GNU، چنین توابعی نتایج خود را درست مانند آنچه در GNU C انجام می‌دهند بازمی‌گردانند\-\-\-توابع با نوع پیش‌فرض \f(CW\*(C`REAL\*(C'\fR نوع \f(CW\*(C`float\*(C'\fR در C، و توابع \f(CW\*(C`COMPLEX\*(C'\fR نوع \f(CW\*(C`complex\*(C'\fR در GNU C را برمی‌گردانند. علاوه بر این، این گزینه به طور ضمنی شامل گزینهٔ \fB\-fsecond\-underscore\fR است، مگر اینکه \fB\-fno\-second\-underscore\fR صراحتاً درخواست شده باشد. .Sp این گزینه بر تولید کدی که با کتابخانهٔ \fBlibgfortran\fR ارتباط برقرار می‌کند تأثیری ندارد. .Sp \&\fIهشدار:\fR ترکیب کد فرترن کامپایل‌شده با \&\fB\-ff2c\fR با کد کامپایل‌شده با قراردادهای فراخوانی پیش‌فرض \fB\-fno\-f2c\fR ایدهٔ خوبی نیست، زیرا فراخوانی توابع \f(CW\*(C`COMPLEX\*(C'\fR یا توابع با نوع پیش‌فرض \f(CW\*(C`REAL\*(C'\fR بین بخش‌هایی از برنامه که با قراردادهای فراخوانی متفاوتی کامپایل شده‌اند در زمان اجرا دچار شکست خواهد شد. .Sp \&\fIهشدار:\fR این کار کدهایی را که توابع ذاتی (intrinsic) از نوع پیش‌فرض \f(CW\*(C`REAL\*(C'\fR یا \f(CW\*(C`COMPLEX\*(C'\fR را به‌عنوان آرگومان‌های واقعی ارسال می‌کنند دچار اختلال می‌کند، زیرا پیاده‌سازی‌های کتابخانه از قراردادهای فراخوانی \fB\-fno\-f2c\fR استفاده می‌کنند. .IP \fB\-fno\-underscoring\fR 4 .IX Item "-fno-underscoring" نام‌های موجودیت‌های مشخص‌شده در فایل منبع فرترن را با افزودن زیرخط (underscore) به انتهای آن‌ها دگرگون نکنید. .Sp با فعال بودن \fB\-funderscoring\fR، گنو فرترن یک زیرخط به نام‌های خارجی اضافه می‌کند. این کار برای اطمینان از سازگاری با کد تولیدشده توسط بسیاری از کامپایلرهای فرترن یونیکس انجام می‌شود. توجه داشته باشید که این مورد برای نام‌های اعلان‌شده با C binding یا درون یک ماژول اعمال نمی‌شود. .Sp \&\fIهشدار\fR: رفتار پیش‌فرض گنو فرترن با \fBf2c\fR و \fBg77\fR ناسازگار است؛ لطفاً در صورتی که می‌خواهید فایل‌های شیء کامپایل‌شده با گنو فرترن با کد شیء ایجادشده توسط این ابزارها سازگار باشند، از گزینهٔ \&\fB\-ff2c\fR استفاده کنید. .Sp استفاده از \fB\-fno\-underscoring\fR توصیه نمی‌شود مگر اینکه در حال آزمایش مواردی مانند یکپارچه‌سازی گنو فرترن در محیط‌های سیستمی موجود باشید (در مقایسه با کتابخانه‌ها، ابزارها و غیرهٔ موجود). .Sp به‌عنوان مثال، با \fB\-funderscoring\fR و با فرض اینکه \f(CWj()\fR و \&\f(CWmax_count()\fR توابع خارجی هستند در حالی که \f(CW\*(C`my_var\*(C'\fR و \&\f(CW\*(C`lvar\*(C'\fR متغیرهای محلی هستند، یک دستور فرترن مانند: .Sp .Vb 1 \& I = J() + MAX_COUNT (MY_VAR, LVAR) .Ve .Sp به‌صورت چیزی شبیه به کد C زیر پیاده‌سازی می‌شود: .Sp .Vb 1 \& i = j_() + max_count_(&my_var, &lvar); .Ve .Sp با \fB\-fno\-underscoring\fR، همان دستور به‌صورت زیر پیاده‌سازی می‌شود: .Sp .Vb 1 \& i = j() + max_count(&my_var, &lvar); .Ve .Sp استفاده از \fB\-fno\-underscoring\fR امکان تعیین مستقیم نام‌های تعریف‌شده توسط کاربر را در حین اشکال‌زدایی و هنگام ارتباط کد گنو فرترن با زبان‌های دیگر فراهم می‌سازد. .Sp توجه داشته باشید که صرفاً تطابق نام‌ها به این معنا \fIنیست\fR که رابط پیاده‌سازی‌شده توسط گنو فرترن برای یک نام خارجی، با رابط پیاده‌سازی‌شده توسط زبانی دیگر برای همان نام مطابقت دارد. به بیان دیگر، پیوند دادن کد تولیدشده توسط گنو فرترن به کد تولیدشده توسط کامپایلری دیگر با استفاده از این روش یا هر روش دیگر می‌تواند تنها بخش کوچکی از راه‌حل کلی باشد\-\-\-توافق کد تولیدشده توسط هر دو کامپایلر در مواردی غیر از نام‌گذاری ممکن است نیازمند تلاش قابل‌توجهی باشد، و بر خلاف ناسازگاری‌های نام‌گذاری، پیونددهنده‌ها معمولاً نمی‌توانند ناسازگاری‌ها در این بخش‌های دیگر را تشخیص دهند. .Sp همچنین توجه داشته باشید که با \fB\-fno\-underscoring\fR، عدم وجود زیرخط‌های الحاقی این احتمال کاملاً واقعی را ایجاد می‌کند که یک نام خارجی تعریف‌شده توسط کاربر با نامی در کتابخانهٔ سیستم تداخل پیدا کند، که می‌تواند یافتن باگ‌های ارجاع حل‌نشده (unresolved\-reference) را در برخی موارد بسیار دشوار سازد\-\-\-آن‌ها ممکن است در زمان اجرای برنامه رخ دهند و تنها به‌صورت رفتارهای دارای باگ در زمان اجرا نمایان شوند. .Sp همچنین توجه داشته باشید که اعلان نمادها به‌صورت \f(CWbind(C)\fR روشی بسیار مطمئن‌تر برای برقراری ارتباط با کدهای نوشته‌شده به زبان‌های دیگر یا کامپایل‌شده با کامپایلرهای فرترن مختلف، نسبت به گزینه‌های خط فرمان شرح‌داده‌شده در این بخش است. .IP \fB\-fsecond\-underscore\fR 4 .IX Item "-fsecond-underscore" به‌طور پیش‌فرض، گنو فرترن یک زیرخط به نام‌های خارجی اضافه می‌کند. اگر از این گزینه استفاده شود، گنو فرترن به نام‌های دارای زیرخط دو زیرخط، و به نام‌های بدون زیرخط یک زیرخط اضافه می‌کند. .Sp به‌عنوان مثال، یک نام خارجی مانند \f(CW\*(C`MAX_COUNT\*(C'\fR به‌صورت ارجاع به نماد خارجی زمان پیوند \&\f(CW\*(C`max_count_\|_\*(C'\fR به جای \f(CW\*(C`max_count_\*(C'\fR پیاده‌سازی می‌شود. این امر برای سازگاری با \fBg77\fR و \fBf2c\fR الزامی است و با استفاده از گزینهٔ \fB\-ff2c\fR نیز به‌طور ضمنی فعال می‌گردد. .Sp اگر \fB\-fno\-underscoring\fR فعال باشد، این گزینه هیچ تأثیری ندارد. این گزینه به‌طور ضمنی توسط گزینهٔ \fB\-ff2c\fR فعال می‌شود. .IP \fB\-fcoarray=\fR\fI\fR 4 .IX Item "-fcoarray=" .RS 4 .PD 0 .IP \fBnone\fR 4 .IX Item "none" .PD غیرفعال‌سازی پشتیبانی از هم‌آرایه (coarray)؛ استفاده از اعلان‌های هم‌آرایه و دستورهای کنترل تصویر (image\-control) منجر به خطای زمان کامپایل می‌شود. (پیش‌فرض) .IP \fBsingle\fR 4 .IX Item "single" حالت تک‌تصویری، بدین معنی که \f(CWnum_images()\fR همیشه برابر یک است. .IP \fBlib\fR 4 .IX Item "lib" موازی‌سازی هم‌آرایه مبتنی بر کتابخانه؛ یک کتابخانهٔ هم‌آرایه مناسب گنو فرترن مانند <\fBhttp://opencoarrays.org\fR> باید پیوند داده شود. همچنین، کتابخانهٔ \f(CW\*(C`libcaf_single\*(C'\fR متعلق به GCC می‌تواند پیوند داده شود، اگرچه فقط از یک تصویر پشتیبانی می‌کند. .RE .RS 4 .RE .IP \fB\-fcheck=\fR\fI\fR 4 .IX Item "-fcheck=" فعال‌سازی تولید بررسی‌های زمان اجرا؛ آرگومان باید فهرستی از کلمات کلیدی زیر باشد که با کاما از یکدیگر جدا شده‌اند. افزودن پیشوند \&\fBno\-\fR به یک بررسی، در صورتی که توسط یک مشخصهٔ قبلی فعال شده باشد، آن را غیرفعال می‌کند. .RS 4 .IP \fBall\fR 4 .IX Item "all" فعال‌سازی تمام آزمون‌های زمان اجرای \fB\-fcheck\fR. .IP \fBarray\-temps\fR 4 .IX Item "array-temps" در زمان اجرا هشدار می‌دهد هرگاه برای ارسال یک آرگومان واقعی، نیاز به ایجاد یک آرایهٔ موقت بوده باشد. اطلاعات تولیدشده توسط این هشدار گاهی برای بهینه‌سازی و به‌منظور جلوگیری از ایجاد چنین آرایه‌های موقتی مفید است. .Sp نکته: هشدار تنها یک‌بار به ازای هر مکان چاپ می‌شود. .IP \fBbits\fR 4 .IX Item "bits" فعال‌سازی تولید بررسی‌های زمان اجرا برای آرگومان‌های نامعتبر به توابع ذاتی دستکاری بیت. .IP \fBbounds\fR 4 .IX Item "bounds" فعال‌سازی تولید بررسی‌های زمان اجرا برای اندیس‌های آرایه و در برابر مقادیر حداقل و حداکثر اعلان‌شده. این گزینه همچنین اندیس‌های آرایه را برای آرایه‌های با شکل مفروض (assumed) و معوق (deferred) در برابر مرزهای تخصیص‌یافتهٔ واقعی بررسی می‌کند و تضمین می‌نماید که تمام طول‌های رشته برای سازنده‌های آرایهٔ کاراکتری بدون typespec صریح با یکدیگر برابر باشند. .Sp برخی از بررسی‌ها نیازمند آن هستند که \fB\-fcheck=bounds\fR برای کامپایل برنامهٔ اصلی تنظیم شده باشد. .Sp نکته: در آینده ممکن است این گزینه اشکال دیگری از بررسی را نیز در بر گیرد، مانند بررسی ارجاعات زیررشته. .IP \fBdo\fR 4 .IX Item "do" فعال‌سازی تولید بررسی‌های زمان اجرا برای تغییر نامعتبر متغیرهای تکرار حلقه. .IP \fBmem\fR 4 .IX Item "mem" فعال‌سازی تولید بررسی‌های زمان اجرا برای تخصیص حافظه. نکته: این گزینه بر تخصیص‌های صریح با استفاده از دستور \&\f(CW\*(C`ALLOCATE\*(C'\fR که همواره بررسی می‌شوند، تأثیری ندارد. .IP \fBpointer\fR 4 .IX Item "pointer" فعال‌سازی تولید بررسی‌های زمان اجرا برای اشاره‌گرها (pointers) و متغیرهای قابل‌تخصیص (allocatables). .IP \fBrecursion\fR 4 .IX Item "recursion" فعال‌سازی تولید بررسی‌های زمان اجرا برای زیرروال‌ها و توابعی که به‌صورت بازگشتی فراخوانی شده‌اند اما به‌عنوان بازگشتی علامت‌گذاری نشده‌اند. همچنین \fB\-frecursive\fR را ببینید. نکته: این بررسی برای برنامه‌های OpenMP عمل نمی‌کند و در صورت استفاده همراه با \fB\-frecursive\fR و \fB\-fopenmp\fR غیرفعال می‌شود. .RE .RS 4 .Sp مثال: با فرض اینکه فایلی به نام \fIfoo.f90\fR دارید، دستور .Sp .Vb 1 \& gfortran \-fcheck=all,no\-array\-temps foo.f90 .Ve .Sp فایل را با فعال بودن تمام بررسی‌های مشخص‌شده در بالا به استثنای هشدارهای مربوط به آرایه‌های موقت تولیدشده، کامپایل می‌کند. .RE .IP \fB\-fbounds\-check\fR 4 .IX Item "-fbounds-check" نام مستعار منسوخ‌شده برای \fB\-fcheck=bounds\fR. .IP \fB\-ftail\-call\-workaround\fR 4 .IX Item "-ftail-call-workaround" .PD 0 .IP \fB\-ftail\-call\-workaround=\fR\fIn\fR 4 .IX Item "-ftail-call-workaround=n" .PD برخی از رابط‌های C به کدهای فرترن، با حذف آرگومان‌های پنهان طول کاراکتر، ABI مربوط به gfortran را نقض می‌کنند. این امر می‌تواند منجر به بروز خرابی و کرش شود زیرا قرار دادن (push) آرگومان‌ها برای فراخوانی‌های پایانی (tail calls) می‌تواند موجب سرریز پشته (overflow the stack) گردد. .Sp برای ارائه یک راه‌حل موقت (workaround) جهت بسته‌های باینری موجود، این گزینه بهینه‌سازی فراخوانی پایانی را برای روال‌های gfortran با آرگومان‌های کاراکتری غیرفعال می‌کند. با \fB\-ftail\-call\-workaround=2\fR بهینه‌سازی فراخوانی پایانی در تمام روال‌های gfortran با آرگومان‌های کاراکتری غیرفعال می‌شود، و با \fB\-ftail\-call\-workaround=1\fR یا معادل آن \&\fB\-ftail\-call\-workaround\fR تنها در روال‌های gfortran با آرگومان‌های کاراکتری که روال‌های دارای پیش‌نمونهٔ ضمنی (implicitly prototyped) را فراخوانی می‌کنند، غیرفعال می‌گردد. .Sp استفاده از این گزینه می‌تواند منجر به مشکلاتی از جمله کرش به دلیل کمبود فضای پشته (stack space) شود. .Sp \fIبسیار اکیداً\fR توصیه می‌شود کد مربوطه را اصلاح نمایید. گزینهٔ \fB\-fc\-prototypes\-external\fR می‌تواند برای تولید پیش‌نمونه‌هایی که با ABI مربوط به gfortran سازگار هستند، جهت گنجاندن در کد منبع مورد استفاده قرار گیرد. .Sp پشتیبانی از این گزینه احتمالاً در انتشار آیندهٔ gfortran متوقف خواهد شد. .Sp شکل منفی، \fB\-fno\-tail\-call\-workaround\fR یا معادل آن \&\fB\-ftail\-call\-workaround=0\fR، می‌تواند برای غیرفعال کردن این گزینه به کار رود. .Sp پیش‌فرض در حال حاضر \fB\-ftail\-call\-workaround\fR است؛ این مورد در نسخه‌های آینده تغییر خواهد کرد. .IP \fB\-fcheck\-array\-temporaries\fR 4 .IX Item "-fcheck-array-temporaries" نام مستعار منسوخ‌شده برای \fB\-fcheck=array\-temps\fR. .IP \fB\-fmax\-array\-constructor=\fR\fIn\fR 4 .IX Item "-fmax-array-constructor=n" این گزینه می‌تواند برای افزایش حد بالای مجاز در سازنده‌های آرایه به کار رود. کد زیر برای بسط دادن آرایه در زمان کامپایل، به این گزینه نیاز دارد. .Sp .Vb 7 \& program test \& implicit none \& integer j \& integer, parameter :: n = 100000 \& integer, parameter :: i(n) = (/ (2*j, j = 1, n) /) \& print \*(Aq(10(I0,1X))\*(Aq, i \& end program test .Ve .Sp \&\fIهشدار: این گزینه می‌تواند منجر به زمان طولانی کامپایل و فایل‌های شیء بیش از حد بزرگ شود.\fR .Sp مقدار پیش‌فرض برای \fIn\fR برابر ۶۵۵۳۵ است. .IP \fB\-fmax\-stack\-var\-size=\fR\fIn\fR 4 .IX Item "-fmax-stack-var-size=n" این گزینه اندازه بر حسب بایت بزرگ‌ترین آرایه‌ای را که روی پشته قرار می‌گیرد مشخص می‌کند؛ اگر اندازه بیش از این مقدار شود، از حافظه ایستا (static) استفاده می‌شود (به‌جز در روال‌هایی که با \f(CW\*(C`RECURSIVE\*(C'\fR مشخص شده‌اند). از گزینه \fB\-frecursive\fR برای پشتیبانی از روال‌های بازگشتی که فاقد ویژگی \&\f(CW\*(C`RECURSIVE\*(C'\fR هستند یا برای برنامه‌های موازی استفاده کنید. برای استفاده نکردن همیشگی از پشته، گزینه \fB\-fno\-automatic\fR را به کار ببرید. .Sp این گزینه در حال حاضر فقط بر آرایه‌های محلی اعلان‌شده با کران‌های ثابت تأثیر می‌گذارد و ممکن است برای تمامی متغیرهای نویسه‌ای اعمال نشود. نسخه‌های آینده GNU Fortran ممکن است این رفتار را بهبود بخشند. .Sp مقدار پیش‌فرض برای \fIn\fR برابر 65536 است. .IP \fB\-fstack\-arrays\fR 4 .IX Item "-fstack-arrays" افزودن این گزینه باعث می‌شود که کامپایلر فرترن تمام آرایه‌های با اندازه نامشخص و آرایه‌های موقت را روی حافظه پشته قرار دهد. اگر برنامه شما از آرایه‌های محلی بسیار بزرگ استفاده می‌کند، ممکن است لازم باشد در برخی سیستم‌عامل‌ها محدودیت‌های زمان اجرای حافظه پشته را افزایش دهید. این فلگ به طور پیش‌فرض در سطح بهینه‌سازی \fB\-Ofast\fR فعال است، مگر اینکه \&\fB\-fmax\-stack\-var\-size\fR مشخص شده باشد. .IP \fB\-fpack\-derived\fR 4 .IX Item "-fpack-derived" این گزینه به GNU Fortran اعلام می‌کند که اعضای انواع مشتق‌شده (derived type) را تا حد امکان به طور فشرده بسته‌بندی کند. کدی که با این گزینه کامپایل شود احتمالاً با کدی که بدون آن کامپایل شده ناسازگار خواهد بود و ممکن است کندتر اجرا شود. .IP \fB\-frepack\-arrays\fR 4 .IX Item "-frepack-arrays" در برخی شرایط، ممکن است GNU Fortran بخش‌هایی از یک آرایه با شکل مفروض (assumed-shape) را از طریق توصیف‌گری ارسال کند که ناحیه‌ای غیرپیوسته از حافظه را توصیف می‌کند. این گزینه کدی را به مقدمه تابع می‌افزاید تا داده‌ها را در زمان اجرا در یک بلوک پیوسته مجدداً بسته‌بندی کند. .Sp این کار باید منجر به دسترسی سریع‌تر به آرایه شود. با این حال، می‌تواند بار اضافی چشمگیری به فراخوانی تابع تحمیل کند، به‌ویژه هنگامی که داده‌های ارسال‌شده غیرپیوسته باشند. .IP \fB\-fshort\-enums\fR 4 .IX Item "-fshort-enums" این گزینه برای سازگاری و هم‌کنش‌پذیری با کد C که با گزینه \fB\-fshort\-enums\fR کامپایل شده، فراهم شده است. این گزینه باعث می‌شود GNU Fortran کوچک‌ترین نوع (kind) از \f(CW\*(C`INTEGER\*(C'\fR را که مجموعه شمارشی داده‌شده در آن جای می‌گیرد انتخاب کرده و به تمام شمارنده‌های آن همین نوع را اختصاص دهد. .IP \fB\-finline\-arg\-packing\fR 4 .IX Item "-finline-arg-packing" هنگام ارسال یک آرگومان با شکل مفروض (assumed-shape) از یک روال به عنوان آرگومان واقعی به یک روال با اندازه مفروض (assumed-size) یا اندازه صریح، یا به عنوان آرگومان به روالی که رابط صریح ندارد، ممکن است لازم باشد آرگومان بسته‌بندی شود؛ یعنی در حافظه‌ای پیوسته قرار گیرد. نمونه‌ای از این حالت، فراخوانی \f(CW\*(C`foo\*(C'\fR در کد زیر است: .Sp .Vb 7 \& subroutine foo(a) \& real, dimension(*) :: a \& end subroutine foo \& subroutine bar(b) \& real, dimension(:) :: b \& call foo(b) \& end subroutine bar .Ve .Sp هنگامی که \fB\-finline\-arg\-packing\fR فعال باشد، این بسته‌بندی توسط کد درون‌خطی (inline) انجام می‌شود. این امر بهینه‌سازی بیشتری را میسر می‌سازد در حالی که حجم کد را افزایش می‌دهد. .Sp گزینه \&\fB\-finline\-arg\-packing\fR به طور ضمنی با هر یک از گزینه‌های \fB\-O\fR فعال می‌شود، مگر در هنگام بهینه‌سازی برای اندازه از طریق \fB\-Os\fR. اگر کد شامل تعداد بسیار زیادی آرگومان باشد که باید بسته‌بندی شوند، حجم کد و همچنین زمان کامپایل ممکن است بیش از حد افزایش یابد. در چنین مواردی، بهتر است این گزینه غیرفعال شود. موارد بسته‌بندی را می‌توان با استفاده از \fB\-Warray\-temporaries\fR شناسایی کرد. .IP \fB\-fexternal\-blas\fR 4 .IX Item "-fexternal-blas" این گزینه باعث می‌شود که \fBgfortran\fR برای برخی از عملیات ماتریسی مانند \f(CW\*(C`MATMUL\*(C'\fR، به جای الگوریتم‌های درونی خود، فراخوانی‌هایی به توابع BLAS تولید کند، در صورتی که اندازه ماتریس‌های مربوطه بزرگ‌تر از یک حد مشخص باشد (گزینه \fB\-fblas\-matmul\-limit\fR را ببینید). این کار در صورت در دسترس بودن یک کتابخانه بهینه‌شده BLAS از ارائه‌دهنده می‌تواند سودمند باشد. کتابخانه BLAS باید در زمان پیوند (link time) مشخص شود. این گزینه یک کتابخانه BLAS با آرگومان‌های صحیح از نوع پیش‌فرض (۳۲ بیتی) را تعیین می‌کند. این گزینه نمی‌تواند همراه با \fB\-fexternal\-blas64\fR استفاده شود. .IP \fB\-fexternal\-blas64\fR 4 .IX Item "-fexternal-blas64" باعث می‌شود \fBgfortran\fR برای برخی عملیات ماتریسی مانند \f(CW\*(C`MATMUL\*(C'\fR، به جای استفاده از الگوریتم‌های درونی خود، فراخوانی‌هایی به توابع BLAS تولید کند، در صورتی که اندازه ماتریس‌های مربوطه بزرگ‌تر از یک حد معین باشد (گزینه \fB\-fblas\-matmul\-limit\fR را ببینید). این کار در صورت در دسترس بودن کتابخانه BLAS بهینه‌شده سودمند خواهد بود. کتابخانه BLAS باید در زمان پیوند مشخص گردد. این گزینه کتابخانه BLAS با آرگومان‌های صحیح از نوع \f(CW\*(C`KIND=8\*(C'\fR (۶۴ بیتی) را مشخص می‌کند. این گزینه نمی‌تواند همراه با \fB\-fexternal\-blas\fR استفاده شود و به یک سیستم ۶۴ بیتی نیاز دارد. همچنین این گزینه مستلزم استفاده از \fB\-ffrontend\-optimize\fR است. .IP \fB\-fblas\-matmul\-limit=\fR\fIn\fR 4 .IX Item "-fblas-matmul-limit=n" تنها زمانی دارای اهمیت است که \fB\-fexternal\-blas\fR یا \fB\-fexternal\-blas64\fR فعال باشند. ضرب ماتریسی برای ماتریس‌هایی با اندازه بزرگ‌تر یا مساوی با \fIn\fR توسط فراخوانی توابع BLAS انجام می‌شود، در حالی که سایر موارد توسط الگوریتم‌های داخلی \fBgfortran\fR مدیریت می‌گردند. اگر ماتریس‌های مربوطه مربعی نباشند، مقایسه اندازه با استفاده از میانگین هندسی ابعاد ماتریس‌های آرگومان و نتیجه انجام می‌گیرد. .Sp مقدار پیش‌فرض برای \fIn\fR برابر با 30 است. .IP \fB\-finline\-intrinsics\fR 4 .IX Item "-finline-intrinsics" .PD 0 .IP \fB\-finline\-intrinsics=\fR\fIintr1\fR\fB,\fR\fIintr2\fR\fB,...\fR 4 .IX Item "-finline-intrinsics=intr1,intr2,..." .PD تولید کد درون‌خطی (inline) را برای پیاده‌سازی توابع درونی فرترن بر فراخوانی توابع کتابخانه libgfortran ترجیح می‌دهد. .Sp استفاده از توابع درونی می‌تواند یا از طریق فراخوانی تابع کتابخانه libgfortran پیاده‌سازی شود یا از طریق تولید مستقیم کد درون‌خطی. برای بیشتر توابع درونی، تنها یک روش پیاده‌سازی موجود است و انتخابی در کار نیست. با این حال، برخی توابع درونی می‌توانند از تابع کتابخانه‌ای یا کد درون‌خطی بهره ببرند، که در آن کد درون‌خطی معمولاً فرصت‌های بیشتری برای بهینه‌سازی نسبت به تابع کتابخانه‌ای ارائه می‌دهد. با گزینه‌های \f(CW\*(C`\-finline\-intrinsics=...\*(C'\fR یا \&\f(CW\*(C`\-fno\-inline\-intrinsics=...\*(C'\fR، این انتخاب تنها بر توابع درونی موجود در فهرست جداشده با ویرگول که به عنوان آرگومان ارائه شده اعمال می‌شود. .Sp برای هر تابع درونی، در صورتی که هیچ انتخابی از طریق گزینه‌های فوق انجام نشده باشد، یک رفتار پیش‌فرض بر اساس سطح بهینه‌سازی برگزیده می‌شود: در صورت عدم بهینه‌سازی یا بهینه‌سازی برای حجم کد، فراخوانی‌های کتابخانه‌ای تولید می‌شوند؛ در غیر این صورت کد درون‌خطی ترجیح داده می‌شود. .Sp مجموعه توابع درونی مجاز به عنوان آرگومان برای \f(CW\*(C`\-finline\-intrinsics=\*(C'\fR در حال حاضر محدود به \f(CW\*(C`MAXLOC\*(C'\fR و \f(CW\*(C`MINLOC\*(C'\fR است. اثر این فلگ همچنین محدود به فراخوانی‌هایی از این توابع درونی است که فاقد آرگومان \&\f(CW\*(C`DIM\*(C'\fR بوده و آرگومان \f(CW\*(C`ARRAY\*(C'\fR آن‌ها از نوعی غیر از \f(CW\*(C`CHARACTER\*(C'\fR باشد. حالت آرگومان مرتبه ۱ و حضور آرگومان \f(CW\*(C`DIM\*(C'\fR، یعنی \&\f(CW\*(C`MAXLOC(A(:),DIM=1)\*(C'\fR یا \f(CW\*(C`MINLOC(A(:),DIM=1)\*(C'\fR، برای آرگومان آرایه عددی مرتبه ۱ \f(CW\*(C`A\*(C'\fR به صورت بدون شرط درون‌خطی‌سازی می‌شود. .IP \fB\-finline\-matmul\-limit=\fR\fIn\fR 4 .IX Item "-finline-matmul-limit=n" هنگامی که بهینه‌سازی فرانت‌اند فعال باشد، برخی فراخوانی‌ها به تابع درونی \f(CW\*(C`MATMUL\*(C'\fR درون‌خطی می‌شوند. این امر ممکن است در صورتی که اندازه ماتریس در زمان کامپایل قابل تشخیص نباشد منجر به افزایش حجم کد شود، زیرا کد برای هر دو حالت تولید می‌گردد. مقداردهی \&\f(CW\*(C`\-finline\-matmul\-limit=0\*(C'\fR درون‌خطی‌سازی را در تمام موارد غیرفعال می‌کند. تنظیم این گزینه با مقدار \fIn\fR برای ماتریس‌هایی با اندازه حداکثر تا \fIn\fR کد درون‌خطی تولید می‌کند. اگر ماتریس‌های مورد نظر مربعی نباشند، مقایسه اندازه با استفاده از میانگین هندسی ابعاد ماتریس‌های آرگومان و نتیجه انجام می‌گیرد. .Sp مقدار پیش‌فرض برای \fIn\fR برابر با 30 است. برای تغییر این مقدار می‌توان از \f(CW\*(C`\-fblas\-matmul\-limit\*(C'\fR استفاده کرد. .IP \fB\-frecursive\fR 4 .IX Item "-frecursive" امکان بازگشت غیرمستقیم را با اجبار به تخصیص تمام آرایه‌های محلی روی پشته فراهم می‌سازد. این فلگ نمی‌تواند همراه با \&\fB\-fmax\-stack\-var\-size=\fR یا \fB\-fno\-automatic\fR استفاده شود. .IP \fB\-finit\-local\-zero\fR 4 .IX Item "-finit-local-zero" .PD 0 .IP \fB\-finit\-derived\fR 4 .IX Item "-finit-derived" .IP \fB\-finit\-integer=\fR\fIn\fR 4 .IX Item "-finit-integer=n" .IP \fB\-finit\-real=\fR 4 .IX Item "-finit-real=" .IP \fB\-finit\-logical=\fR 4 .IX Item "-finit-logical=" .IP \fB\-finit\-character=\fR\fIn\fR 4 .IX Item "-finit-character=n" .PD گزینه \fB\-finit\-local\-zero\fR به کامپایلر دستور می‌دهد که متغیرهای محلی \f(CW\*(C`INTEGER\*(C'\fR، \f(CW\*(C`REAL\*(C'\fR و \f(CW\*(C`COMPLEX\*(C'\fR را با صفر، متغیرهای \f(CW\*(C`LOGICAL\*(C'\fR را با مقدار false، و متغیرهای \&\f(CW\*(C`CHARACTER\*(C'\fR را با رشته‌ای از بایت‌های تهی (null) مقداردهی اولیه کند. گزینه‌های دقیق‌تر مقداردهی اولیه توسط گزینه‌های \&\fB\-finit\-integer=\fR\fIn\fR، \&\fB\-finit\-real=\fR (که بخش‌های حقیقی و موهومی متغیرهای محلی \f(CW\*(C`COMPLEX\*(C'\fR را نیز مقداردهی اولیه می‌کند)، \&\fB\-finit\-logical=\fR و \&\fB\-finit\-character=\fR\fIn\fR (که در آن \fIn\fR یک مقدار نویسه ASCII است) فراهم شده‌اند. .Sp با گزینه \fB\-finit\-derived\fR، مؤلفه‌های متغیرهای نوع مشتق‌شده بر اساس این فلگ‌ها مقداردهی اولیه می‌شوند. مؤلفه‌هایی که نوع آن‌ها تحت پوشش یک فلگ صریح \fB\-finit\-*\fR قرار ندارد، همانند آنچه در بالا با \&\fB\-finit\-local\-zero\fR توصیف شد رفتار خواهند کرد. .Sp این گزینه‌ها موارد زیر را مقداردهی اولیه نمی‌کنند: .RS 4 .IP * 4 اشیای دارای صفت \f(CW\*(C`POINTER\*(C'\fR .IP * 4 آرایه‌های قابل تخصیص (allocatable) .IP * 4 متغیرهایی که در دستور \f(CW\*(C`EQUIVALENCE\*(C'\fR ظاهر می‌شوند. .RE .RS 4 .Sp (این محدودیت‌ها ممکن است در نگارش‌های آینده برداشته شوند). .Sp توجه داشته باشید که گزینه \fB\-finit\-real=nan\fR متغیرهای \f(CW\*(C`REAL\*(C'\fR و \f(CW\*(C`COMPLEX\*(C'\fR را با مقدار NaN آرام (quiet NaN) مقداردهی اولیه می‌کند. برای یک NaN هشداردهنده (signalling NaN) از \fB\-finit\-real=snan\fR استفاده کنید؛ با این حال توجه داشته باشید که بهینه‌سازی‌های زمان کامپایل ممکن است آن‌ها را به NaN آرام تبدیل کنند و همچنین تله‌گذاری خطاها (trapping) باید فعال شده باشد (برای نمونه از طریق \fB\-ffpe\-trap\fR). .Sp گزینه \fB\-finit\-integer\fR مقدار داده‌شده را به صورت یک عدد صحیح از نوع \f(CWINTEGER(kind=C_LONG)\fR روی سیستم میزبان پردازش می‌کند. سپس این مقدار به متغیرهای صحیح در کد فرترن نسبت داده می‌شود که در صورت بزرگ‌تر بودن مقدار از ظرفیت نوع، ممکن است منجر به سرریز و چرخش مقدار (wraparound) شود. .Sp در نهایت، توجه داشته باشید که فعال‌سازی هر یک از گزینه‌های \fB\-finit\-*\fR هشدارهایی را که توسط \fB\-Wuninitialized\fR برای متغیرهای محلی مربوطه صادر می‌شدند خاموش می‌کند. .RE .IP \fB\-falign\-commons\fR 4 .IX Item "-falign-commons" به طور پیش‌فرض، \fBgfortran\fR هم‌ترازی صحیح تمام متغیرها را در یک بلوک \&\f(CW\*(C`COMMON\*(C'\fR با افزودن لایه پرکننده (padding) در صورت نیاز اعمال می‌کند. روی برخی پلتفرم‌ها این امر اجباری است و روی برخی دیگر کارایی را افزایش می‌دهد. اگر یک بلوک \f(CW\*(C`COMMON\*(C'\fR در همه جا با انواع داده سازگار اعلان نشده باشد، این پدینگ می‌تواند مشکل‌ساز شود و از \&\fB\-fno\-align\-commons\fR می‌توان برای غیرفعال کردن هم‌ترازی خودکار استفاده کرد. برای تمام فایل‌هایی که در یک بلوک \f(CW\*(C`COMMON\*(C'\fR مشترک هستند باید از شکل یکسانی از این گزینه استفاده شود. برای اجتناب از مشکلات احتمالی هم‌ترازی در بلوک‌های \f(CW\*(C`COMMON\*(C'\fR، توصیه می‌شود اشیا را از بزرگ‌ترین به کوچک‌ترین مرتب کنید. .IP \fB\-fno\-protect\-parens\fR 4 .IX Item "-fno-protect-parens" به طور پیش‌فرض، پرانتزها در عبارات برای تمام سطوح بهینه‌سازی رعایت می‌شوند تا کامپایلر هیچ‌گونه شرکت‌پذیری مجدد (reassociation) را اعمال نکند. استفاده از \&\fB\-fno\-protect\-parens\fR به کامپایلر اجازه می‌دهد تا عبارات \f(CW\*(C`REAL\*(C'\fR و \&\f(CW\*(C`COMPLEX\*(C'\fR را جهت تولید کد سریع‌تر بازآرایی کند. توجه داشته باشید که برای بهینه‌سازی شرکت‌پذیری مجدد، گزینه‌های \fB\-fno\-signed\-zeros\fR و \fB\-fno\-trapping\-math\fR باید فعال باشند. حفاظت از پرانتزها به صورت پیش‌فرض فعال است، مگر اینکه \&\fB\-Ofast\fR مشخص شده باشد. .IP \fB\-frealloc\-lhs\fR 4 .IX Item "-frealloc-lhs" طرف چپ قابل تخصیص در یک انتساب ذاتی در صورتی که یا تخصیص نیافته باشد یا شکل متفاوتی داشته باشد، به طور خودکار دوباره تخصیص داده می‌شود ((re)allocated). این گزینه به طور پیش‌فرض فعال است، مگر اینکه \fB\-std=f95\fR مشخص شده باشد. همچنین گزینه \fB\-Wrealloc\-lhs\fR را ببینید. .IP \fB\-faggressive\-function\-elimination\fR 4 .IX Item "-faggressive-function-elimination" توابع با فهرست آرگومان‌های یکسان در درون عبارات حذف و یکی می‌شوند، صرف‌نظر از اینکه این توابع دارای صفت \&\f(CW\*(C`PURE\*(C'\fR باشند یا خیر. به عنوان نمونه، در .Sp .Vb 1 \& a = f(b,c) + f(b,c) .Ve .Sp تنها یک فراخوانی به \f(CW\*(C`f\*(C'\fR صورت می‌گیرد. این گزینه تنها در صورتی عمل می‌کند که \fB\-ffrontend\-optimize\fR فعال باشد. .IP \fB\-ffrontend\-optimize\fR 4 .IX Item "-ffrontend-optimize" این گزینه بر پایه دستکاری بخش‌هایی از درخت تجزیه فرترن، بهینه‌سازی فرانت‌اند را انجام می‌دهد. این گزینه به طور پیش‌فرض توسط هر یک از گزینه‌های \fB\-O\fR به‌جز \fB\-O0\fR و \fB\-Og\fR فعال می‌شود. بهینه‌سازی‌های فعال‌شده توسط این گزینه شامل موارد زیر است: .RS 4 .ie n .IP "*<درون‌خطی‌سازی فراخوانی‌های ""MATMUL"",>" 4 .el .IP "*<درون‌خطی‌سازی فراخوانی‌های \f(CWMATMUL\fR,>" 4 .IX Item "*" .PD 0 .IP "*<حذف فراخوانی‌های یکسان توابع در درون عبارات،>" 4 .IX Item "*" .ie n .IP "*<حذف فراخوانی‌های غیرضروری به ""TRIM"" در مقایسه‌ها و انتساب‌ها،>" 4 .el .IP "*<حذف فراخوانی‌های غیرضروری به \f(CWTRIM\fR در مقایسه‌ها و انتساب‌ها،>" 4 .IX Item "*" .ie n .IP "*<جایگزینی TRIM(a) با ""a(1:LEN_TRIM(a))"" و>" 4 .el .IP "*<جایگزینی \f(CWTRIM(a)\fR با \f(CWa(1:LEN_TRIM(a))\fR و>" 4 .IX Item "*" .ie n .IP "*<اتصال کوتاه عملگرهای منطقی ("".AND."" و "".OR."").>" 4 .el .IP "*<اتصال کوتاه عملگرهای منطقی (\f(CW.AND.\fR و \f(CW.OR.\fR).>" 4 .IX Item "*" .PD .RE .RS 4 .Sp می‌توان این گزینه را با تعیین \fB\-fno\-frontend\-optimize\fR غیرفعال کرد. .RE .IP \fB\-ffrontend\-loop\-interchange\fR 4 .IX Item "-ffrontend-loop-interchange" تلاش برای جابه‌جایی حلقه‌ها در فرانت‌اند فرترن در مواردی که سودمند باشد. به طور پیش‌فرض توسط هر گزینه \fB\-O\fR فعال می‌شود. در حال حاضر، این گزینه تنها بر دستورات \f(CW\*(C`FORALL\*(C'\fR و \&\f(CW\*(C`DO CONCURRENT\*(C'\fR با چندین سه‌تایی forall تأثیر می‌گذارد. .SH "محیط (ENVIRONMENT)" .IX Header "ENVIRONMENT" در حال حاضر کامپایلر \fBgfortran\fR به جز متغیرهایی که بر عملکرد \fBgcc\fR تأثیر می‌گذارند، از هیچ متغیر محیطی دیگری برای کنترل عملیات خود استفاده نمی‌کند. .SH "گزارش باگ‌ها (BUGS)" .IX Header "BUGS" برای دریافت دستورالعمل‌های مربوط به گزارش باگ‌ها، ببینید: <\fBhttps://gcc.gnu.org/bugs\fR> .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \&\fBcpp\fR\|(1), \fBgcov\fR\|(1), \fBgcc\fR\|(1), \fBas\fR\|(1), \fBld\fR\|(1), \fBgdb\fR\|(1), \fBdbx\fR\|(1) و مدخل‌های Info برای \fIgcc\fR، \fIcpp\fR، \fIgfortran\fR، \fIas\fR، \&\fIld\fR، \fIbinutils\fR و \fIgdb\fR. .SH "نویسنده (AUTHOR)" .IX Header "AUTHOR" برای آگاهی از مشارکت‌کنندگان در GCC و GNU Fortran، مدخل Info مربوط به \fBgfortran\fR را ببینید. .SH "حق نشر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر (c) 2004\-2026 بنیاد نرم‌افزار آزاد (Free Software Foundation, Inc.) .PP اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشرشده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ با بخش‌های تغییرناپذیر «Funding Free Software»، متون روی جلد (الف) (زیر را ببینید)، و با متون پشت جلد (ب) (زیر را ببینید). نسخه‌ای از این مجوز در صفحه راهنمای \fBgfdl\fR\|(7) گنجانده شده است. .PP (الف) متن روی جلد FSF عبارت است از: .PP .Vb 1 \& A GNU Manual .Ve .PP (ب) متن پشت جلد FSF عبارت است از: .PP .Vb 3 \& You have freedom to copy and modify this GNU Manual, like GNU \& software. Copies published by the Free Software Foundation raise \& funds for GNU development. .Ve