Быстрый вопрос относительно Условной компиляции (ifndef)

Это - вполне, вероятно, очень глупый вопрос, но я должен быть уверен. Мне дали объявление класса в заголовочном файле, например.

#ifndef file_H
#define file_H

class ex{
private:

public:
};

#endif

и я был обязан писать определения метода в том же файле, который я сделал, моим вопросом является "#endif", остается, где это сразу после того, как объявление класса или он идут в конце моего файла после определений метода класса?.

5
задан BCS 16 May 2010 в 14:52
поделиться

1 ответ

В конце файла.

Цель этой формы данного шаблона #ifndef - предотвратить ситуацию, когда одно и то же объявление или определение появляется дважды в единице компиляции.

Это делается потому, что файл C может включать несколько файлов H, которые, в свою очередь, могут включать один и тот же файл. Если бы вы просто запустили препроцессор без них, у вас было бы несколько копий H-файла. Таким образом, у вас есть несколько копий, но препроцессор игнорирует все после первой встречи.

Поскольку вы не должны определять что-либо более одного раза, если вам нужно поместить определения методов в заголовочный файл, поместите их в #endif.

6
ответ дан 14 December 2019 в 13:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: