почему #include только полные объявления и определения? - PullRequest
0 голосов
/ 16 ноября 2018

г. Бьярн Страуструп говорит в своей книге «Язык программирования C ++, четвертое издание» в середине страницы 425 (§15.2.2):

Не стоит слишком умничать с использованием #include. Мои рекомендации: ... включайте только полные объявления и определения.

Не могу понять, что он имеет в виду? Я вижу много кодов, которые используют файлы .h для объявлений и файлы .cpp для определений, а затем просто включают файлы .h. так что он имеет в виду именно под рекомендацией?

1 Ответ

0 голосов
/ 16 ноября 2018

Если я правильно понимаю Страуструпа, это «полные» объявления:

// foo.h
void foo();
struct S {
    int bar() const;
};

Это «неполные» объявления, и вы не должны писать такие заголовки:

// bar_start.h
struct Bar {

// bar_end.h
};

Делай:

#include "foo.h"

Не:

#include "bar_start.h"
void foo();  // foo is a member of Bar
#include "bar_end.h"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...