Каковы разные способы вызова функции? - PullRequest
3 голосов
/ 12 июня 2010

Каковы различные способы вызова функции? Например, я могу вызвать функцию без ()?

Ответы [ 4 ]

5 голосов
/ 12 июня 2010

Вы можете вызвать по имени:

function_name(args);

Вы можете вызвать по указателю функции:

void (*function_pointer)(int, char *) = ...;
(*function_pointer)(3, "moo");   // classic function pointer syntax
function_pointer(3, "moo");      // alternate syntax which obscures that it's using a function pointer

Нет, вы не можете вызвать функцию без использования ().Вы можете скрыть (), используя макрос, но он просто скрывает, где они находятся;в конце вы должны использовать () где-нибудь.

4 голосов
/ 12 июня 2010

Вы можете использовать макрос:

#define f func()

но это не рекомендуемый способ. Ваш код будет очень трудно читать и понимать.

3 голосов
/ 12 июня 2010

В C () равен Синтаксис вызова функции . Вы не можете вызвать функцию без нее.

1 голос
/ 12 июня 2010

Существует несколько педантичных способов вызова функции без использования ().Называть функцию «main» (с правильными параметрами и типами возвращаемых данных) - один из хороших способов.Вы можете зарегистрировать его как обработчик прерываний.Вы можете заставить компилятор запрыгнуть в него, разбив стек ( не переносной и не рекомендуется, работает с gcc на 64-битной x86):

#include <stdio.h>

void foo()
{
        printf("In foo\n");
}

void bar()
{
        long long a;
        long long *b = &a;
        void (*fooptr)() = &foo;
        b[2] = (long long)fooptr;
}

int main()
{
  bar();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...