كيف يتم التعامل مع تعليقات C ++ النمط في GCC 4.3.3 بشكل افتراضي؟

StackOverflow https://stackoverflow.com/questions/1657643

  •  11-09-2019
  •  | 
  •  

سؤال

أنا أستخدم GCC 4.3.3 على أوبونتو 9.04 64 بت وسيحصل على أخطاء باستخدام تعليقات C ++ على غرار C في C. عندما أقول "افتراضيا" في العنوان، أقصد الاحتجاج ببساطة gcc test.c

وفقا ل Docs GCC 4.3.3 (هنا)، هذا مدعوم ... حتى الآن حصلت على الأخطاء على أي حال.

ذهبت هذه الأخطاء بعيدا مع إضافة = C99 بسيطة إلى سلسلة ترجمة بلدي، لذلك تم حل مشكلتي. فضولي إذا كان هناك أي خبراء دول مجلس التعاون الخليجي هناك تفسير لهذا، كما يبدو لي أن أكون تناقضا واضحا للوثائق.

#include <stdio.h>
// this is a comment

int main( void )
{
   return 0;
}
هل كانت مفيدة؟

المحلول

بواسطة Defualt GCC يستخدم معيار C89 / 90 مع ملحقات دول مجلس التعاون الخليجي. يتحدث بشكل صارم بشكل افتراضي أنه لا يلتزم بأي معيار محدد، لأنه لن يؤدي الافتراضي، فلن يصدر أي رسائل تشخيصية في المواقف عند حاجة إلى هذه الرسائل بواسطة المعيار. تحتاج إلى تشغيل دول مجلس التعاون الخليجي -ansi -pedantic وضع (ربما أيضا -Wall) من أجل جعله يتمسك بالمعيار. وفي هذه الحالة، سيكون لديك، مرة أخرى، C89 / 90.

نصائح أخرى

من الممكن أن يغلب أوبونتو الافتراضي، التي يجب أن تكون gnu89. وبعد بالتأكيد لا أحصل على ذلك مع نسختي من دول مجلس التعاون الخليجي 4.3 (على دبيان).

% echo '// foo' | gcc-4.3 -x c -c -
% echo '// foo' | gcc-4.3 -std=gnu89 -x c -c -    
% echo '// foo' | gcc-4.3 -std=c89 -x c -c -    
<stdin>:1: error: expected identifier or '(' before '/' token

اقتباس من http://gcc.gnu.org/onlinedocs/gcc/standards.html#stards.

الافتراضي، إذا لم يتم تقديم خيارات لهجة لغة C، هي -STD = GNU89

و // comments يتم الاعتراف بها من قبل -std=gnu89

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