2016-03-29 14 views
-1

Ich grub Quellcode SnoopSnitch ‚s, wenn ich Bibliotheken dieser Linie in einem seiner gefunden, in C geschrieben:Können wir eine Funktion ohne einen Namen in C haben?

(_s, m); 

_s und m sind beide Strukturen so was kann es sein?

PS: Überprüfen Sie das Ende von this file, um den tatsächlichen Quellcode zu sehen.

+4

Das ist kein Funktionsaufruf, nur eine Auswertung von '_s' dann' m'. Möglicherweise nützlich beim Debuggen. – chux

+0

Es ist ein Komma-Operator. –

+2

Beachten Sie auch, dass Funktionen in C im Allgemeinen als Funktionen, nicht als Methoden bezeichnet werden, wobei die Methode normalerweise als Funktion einer Klasse bekannt ist – CarlH

Antwort

2

C hat keine "Methoden", es hat Funktionen.

In jedem Fall ist der Code, den Sie präsentieren, kein Funktionsaufruf, es ist eine Ausdruckanweisung. Die Klammern dienen, wenn auch unnötigerweise, der vorrangigen Gruppierungsfunktion, und das Komma ist der Kommaoperator, der beide Operanden auswertet und als Ergebnis den Wert seines zweiten Operanden hat.

Insofern als das Ergebnis nicht verwendet wird und die Operanden des Kommas einfache Variablennamen sind, hat die Anweisung insgesamt keine Nebenwirkungen. Der einzige Zweck, den ich mir vorstellen kann, ist der, den @chux in Kommentaren vorschlägt: um eine Aussage zu liefern, wo Sie einen Breakpoint für das Debugging einfügen können, und speziell um die Werte an diesem Punkt der zwei beteiligten Variablen zu untersuchen.

Verwandte Themen