迂腐的ISO规范

时间:2015-10-23 14:21:22

标签: c++ iso

我收到了一个警告:

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

但是,我认为忽略pedantic错误是违反ISO C / C ++规范的。这是真的吗?

编辑:我快速编辑,看到这里的Stack-West充满了快乐的人们:

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 个答案:

答案 0 :(得分:2)

  

然而,我认为忽略迂腐错误是违反ISO的   C / C ++规范

这里似乎有些混乱。让我试着把它分解成个别的误解并清除它们:

  1. 没有C / C ++ ISO规范,因为它们是两种不同的语言,每种语言都有自己的ISO标准:

  2. C ++和C标准不区分警告和错误。在某些有问题的代码的情况下标准所要求的内容称为&#34;诊断消息&#34;。此消息的外观未指定,因此是实施质量问题。这意味着:

    • 如果编译器刚刚打印出&#34; X&#34;那么编译器将符合100%标准(但质量仍然很低)。对于各种不正确的代码。
    • 仅针对格式错误的代码发出警告符合标准。
    • 标准方面,如果发出警告或错误,则无关紧要。
  3. 忽略错误不能违反ISO规范。您的代码可能违反ISO规范,或者您的编译器(更确切地说,您使用某组选项调用的编译器)可能违反ISO规范。 ISO标准是否重要是您自己的决定。规范是达到目的的手段。当然,如果您的目标是长期兼容性和跨平台软件,那么符合ISO标准肯定是个好主意。通过使用-Wpedantic,您已经有效地下定决心:ISO规范 对您很重要,因此您可以更好地修复代码。