لماذا تسمح دول مجلس التعاون الخليجي باستخدام الجولة () في C ++ حتى مع الأعلام ANSI والمحلية؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

هل هناك سبب وجيه يجعل هذا البرنامج يتجمع تحت دول مجلس التعاون الخليجي حتى مع -ansi و -pedantic الأعلام؟

#include <cmath>

int main (int argc, char *argv [])
{
     double x = 0.5;

     return static_cast<int>(round(x));
}

هذا يجمع نظيفة (لا تحذيرات، حتى) مع g++ -ansi -pedantic -Wall test.cpp -o test.

أرى مشكلتين:

  1. round() يجب ألا تكون متاحة ل C ++ في وضع ISO المطابق (لأنه يأتي من C99)
  2. حتى و إن round() كانت متاحة في هذه الحالة، يجب أن يكون ذلك فقط من std مساحة الاسم

هل أنا مخطئ؟

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

المحلول

هذا خطأ. وبعد لقد كان موجودا لفترة طويلة بشكل مدهش. على ما يبدو، لم يكن هناك ما يكفي من الرغبة الجماعية في إصلاحه. مع إصدار جديد من C ++ قاب قوسين أو أدنى مما سيعتمد وظائف C99 من Math.H، يبدو أنه من غير المحتمل أن يتم إصلاحه.

نصائح أخرى

قد أكون خارج القاعدة هنا ولكن لا تنطبق إشارة دول مجلس التعاون الخليجي على إنشاء التعليمات البرمجية (أي تعطيل دول مجلس التعاون الخليجي لغة ملحقات) بدلا من تحويل جميع المكتبات إلى وضع متوافق مع ANSI الصارم أيضا؟

أعتقد أن المعايير تحدد الرموز المطلوبة لمعرفة ومعرفة رأسها. لا أعتقد أن تلك المعايير لا يمكن تحديد أي رموز أخرى. المزيد إلى هذه النقطة، std::round() لن يتم تعريفه بواسطة رمز مجاني يسمى round() يمكن أن يعرف.

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