سؤال

ما هي خيارات GCC التي يجب أن أستخدمها لفرض تحذيرات/أخطاء ANSI C (C99)؟ GCC (GCC) 3.4.2 (MingW-special)

أنا أستخدم: GCC -Pedantic -ansi -std = C99 هل هذا صحيح؟

هل كانت مفيدة؟

المحلول

ال -ansi العلم مرادف لـ -std=c89 علَم.

فقط باستخدام -std=c99 مع -pedantic يجب أن تكون كافية.

عندما تكون في شك ، يمكنك دائما الرجوع إلى وثائق دول مجلس التعاون الخليجي. اعتبارًا من GCC 3.4.2 ، الفصل هو القراءة هو 2 - معايير اللغة التي تدعمها مجلس التعاون الخليجي.

نصائح أخرى

هذا سؤال قديم ولكني أردت فقط إضافة بعض النقاط الإضافية.

أولاً ، بغض النظر عن مجموعة مفاتيح سطر الأوامر العامة التي تزودها بـ GCC ، لا يبدو من الممكن حاليًا إنشاء GCC للإبلاغ عن الجميع انتهاكات القيد كـ "أخطاء" وكل شيء آخر باسم "التحذيرات". بعض الرسائل التشخيصية تقارير GCC بأنها "تحذيرات" هي في الواقع انتهاكات القيد (أي "الأخطاء") من وجهة نظر لغة C ، ولكن لا توجد طريقة لإجبار GCC على إدراك هذه الحقيقة وتوليد تشخيص "خطأ". ربما يمكن تحقيق فصل أكثر دقة عن طريق صياغة أنواع التحذير الفردية ، لكنني لست متأكدًا من أن إعدادات مجلس التعاون الخليجي توفر تفريغًا كافيًا لتحقيق تطابق جيد.

ثانياً ، توفر مجلس التعاون الخليجي -pedantic-errors الخيار الذي يمكن استخدامه بدلاً من العادي -pedantic, ، والذي يهدف إلى تمكين تصنيف أكثر دقة (كما هو موضح أعلاه) للرسائل التشخيصية إلى "أخطاء" و "تحذيرات". لا يزال غير مثالي رغم ذلك.

ملاحظة: لا تتطلب مواصفات اللغة/تحديد فصل الرسائل التشخيصية إلى "أخطاء" و "تحذيرات" ، ولكن في الممارسة العملية يتوقع العديد من المبرمجين أن يتم الإبلاغ عن انتهاكات القيد على أنها "أخطاء". اعتقدت أنك قد تكون تعني شيئًا كهذا عندما ذكرت "فرض التحذيرات/الأخطاء" في سؤالك.

-ansi
    In C mode, this is equivalent to -std=c89. In C++ mode, it is equivalent to -std=c++98.

Ansi C ليس هو نفسه C99 (حتى الآن). ايضا، -Wall قد تكون ذات أهمية أيضًا ، ولكن فقط -pedantic يجب أن تفعل ما تريد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top