Delen via


Compilerwaarschuwing (niveau 1) C4930

'prototype': prototypefunctie niet aangeroepen (was een variabeledefinitie bedoeld?)

Opmerkingen

De compiler heeft een prototype van een ongebruikte functie gedetecteerd. Als het prototype is bedoeld als een variabeledeclaratie, verwijdert u de haakjes openen/sluiten.

Voorbeelden

In het volgende voorbeeld wordt C4930 gegenereerd:

// C4930.cpp
// compile with: /W1
class Lock {
public:
   int i;
};

void f() {
   Lock theLock();   // C4930
   // try the following line instead
   // Lock theLock;
}

int main() {
}

C4930 kan ook optreden wanneer de compiler geen onderscheid kan maken tussen een declaratie van een functieprototype en een functieaanroep.

In het volgende voorbeeld wordt C4930 gegenereerd:

// C4930b.cpp
// compile with: /EHsc /W1

class BooleanException
{
   bool _result;

public:
   BooleanException(bool result)
      : _result(result)
   {
   }

   bool GetResult() const
   {
      return _result;
   }
};

template<class T = BooleanException>
class IfFailedThrow
{
public:
   IfFailedThrow(bool result)
   {
      if (!result)
      {
         throw T(result);
      }
   }
};

class MyClass
{
public:
   bool MyFunc()
   {
      try
      {
         IfFailedThrow<>(MyMethod()); // C4930

         // try one of the following lines instead
         // IfFailedThrow<> ift(MyMethod());
         // IfFailedThrow<>(this->MyMethod());
         // IfFailedThrow<>((*this).MyMethod());

         return true;
      }
      catch (BooleanException e)
      {
         return e.GetResult();
      }
   }

private:
   bool MyMethod()
   {
      return true;
   }
};

int main()
{
   MyClass myClass;
   myClass.MyFunc();
}

In het bovenstaande voorbeeld wordt het resultaat van een methode die nulargumenten gebruikt, doorgegeven als een argument aan de constructor van een niet-benoemde lokale klassevariabele. De aanroep kan onambigumenteerd zijn door de lokale variabele een naam te geven of de methodeaanroep vooraf te laten gaan met een objectexemplaren, samen met de juiste operator pointer-to-member.