2015-10-23 2 views
-4

Я получил предупреждение, глядя, как:Pedantic ISO Norm

In file included from /[myapplication]/[myfile].h:262:9: erreur: extra ‘;’ [-Wpedantic] 

Однако, я думаю, что игнорирование pedantic ошибки против нормы в ISO C/C++. Это правда?

EDIT: Я быстро редактированием видеть, что Stack-Запад здесь полно downvote счастливый человек:

using namespace my:name:space; 

namespace my 
{ 
    namespace name 
    { 
     namespace space 
     { 

      class myclass 
      { 
       public: 

       [Lots of code like the one below] 

       /** [Comments] */ 

       template<class T> 
        static bool 
        getServerProxy(const std::string & p_sServerName, 
        int p_iProxyInstanceID, shared_ptr<T> &p_ServerProxy) 
       { 
        return getServerProxy(p_sServerName, -1, p_iProxyInstanceID, 
        p_ServerProxy); 
       } 
       ; // Pedantic Error Shown here 

       [Lots of code like the one up there] 

       }; 

      } 
     } 
    } 
+1

ERREUR, пожалуйста, покажите нам файл в вопросе – Columbo

+0

пожалуйста, добавьте код, в котором вы получаете это предупреждение .. – HadeS

+3

Вы можете просто удалить лишнюю точку с запятой? – Barry

ответ

2

Однако, я думаю, что игнорирование педантичных ошибки противоречит ISO Стандарт C/C++

Здесь, похоже, существует довольно путаница. Позвольте мне попытаться разбить его на отдельные заблуждения и очистить их:

  1. Там нет C/норма C++ ISO, потому что это два разных языка, каждый со своим собственным стандартом ISO (ы):

  2. Стандарты C++ и C не различают предупреждения и ошибки. То, что требуют стандарты в случае проблемного кода, называется «диагностическим сообщением». Это сообщение выглядит неуказанным и, следовательно, проблемой качества реализации. Что означает:

    • Компилятор будет на 100% совместим со стандартами (но все еще низкого качества), если он просто напечатал «X» для любого типа плохо сформированного кода.
    • Испускает предупреждение только для плохо сформированного кода is соответствует стандартам.
    • В соответствии со стандартами, никогда не имеет значения, возникает ли предупреждение или ошибка.
  3. Несоблюдение данного сообщения не может быть нарушено нормой ISO. Ваш код может быть против нормы ISO или вашего компилятора (точнее, ваш компилятор, вызванный определенным набором опций) может быть против нормы ISO. Является ли стандартом ISO важным или нет, это ваше собственное решение. Норма - это средство для достижения цели. Конечно, если вы нацелены на долгосрочную совместимость и кросс-платформенное программное обеспечение, то в соответствии с нормой ISO, безусловно, хорошая идея. Используя -Wpedantic, вы решительно решили: нормат важен для вас, поэтому лучше исправить код.

+0

Хорошо, спасибо вам за то, что вы действительно ответили на вопрос !!! Вы получили мне необходимую информацию! еще раз спасибо – xhaltar

Смежные вопросы