Форвардное объявление встроенных функций - PullRequest
18 голосов
/ 16 февраля 2012

У меня есть заголовочный файл, который будет содержать большое количество (более 30) встроенных функций.

Вместо того чтобы прокручивать читатель или искать определение (реализацию) встроенной функции, я хотел бы иметь секцию forward декларацию , которая содержит объявление функции с комментариями, описывающими функцию,Этот раздел позволит читателю узнать, как использовать функцию или искать функцию без необходимости прокручивать ее до конца.

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

Каков синтаксис для прямого объявления автономной функции?

{Это относится к C99 и C ++}

К вашему сведению, я использую компилятор IAR Workbench C, настроенный на использование C99.

Ответы [ 2 ]

22 голосов
/ 16 февраля 2012

Не отличается от не встроенной функции:

void func();       // "forward" declaration

// ...

inline void func() // definition
{
    // impl
}

Обычно шаблон, используемый для «скрытия» определений от потребителя библиотеки, состоит в том, чтобы поместить объявления в один заголовок (a.h) и определения во второй заголовок (a_def.h), а затем получить первый #include последний (охрана включения опущена для краткости):

// a.h
void func();
#include "a_def.h"

// a_def.h
inline void func()
{
    // impl
}

Потребитель библиотеки будет просто #include <a.h>.

3 голосов
/ 16 февраля 2012

Вам не нужно «объявлять вперед» его (термин, который обычно применяется только к типам, поскольку мы обычно определяем их в том же месте, в котором мы их сначала объявляем).

Просто объявите его, как обычно:

#include <iostream>

void foo();            // Declaration

inline void foo() {    // Defining declaration
   std::cout << "!";
}

// ---------------------------------------------

int main() {
   foo();              // Output: foo()
}

Демо-версия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...