2016-03-29 3 views
-1

Я копал исходный код SnoopSnitch «s, когда я нашел в одном из его библиотеки этой строки, написанные в C:Можем ли мы иметь функцию без имени в C?

(_s, m); 

_s и м являются обе структуры, так что это может быть?

PS: Проверьте конец this file, чтобы увидеть фактический исходный код.

+4

Это не вызов функции, просто оценка '_s', а затем' m'. Возможно, полезно при отладке. – chux

+0

Это запятая. –

+2

также отмечают, что функции в C обычно называются функциями, а не методами, метод обычно известен как функция, принадлежащая классу – CarlH

ответ

2

C не имеет «методов» вообще, он имеет функции.

В любом случае код, который вы представляете, не является вызовом функции, это оператор выражения. Круглые скобки служат их приоритетной функции группировки, хотя и неоправданно, и запятая является оператором запятой, который оценивает оба операнда и имеет в качестве результата значение своего второго операнда.

Поскольку результат не используется, а операнды запятой - простые имена переменных, утверждение в целом не имеет побочных эффектов. Единственная цель, которую я могу придумать, - это то, что @chux предлагает в комментариях: предоставить инструкцию, в которой вы можете вставить точку останова для отладки и особенно для изучения значений в этой точке двух переменных.

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