Почему в stdafx.h нет необходимости в защите заголовков? - PullRequest
3 голосов
/ 11 мая 2011

Я не понимаю, почему средства защиты заголовков не используются в предварительно скомпилированных заголовках ... Есть идеи?

Ответы [ 4 ]

3 голосов
/ 12 мая 2011

Если все, что вы делаете, это включаете другие заголовки, то в этом нет необходимости. Если эти файлы не могут быть включены несколько раз, они будут иметь свои собственные средства защиты заголовков. stdafx.h самому не важно, сколько раз он включен, если вы не используете его неправильно.

3 голосов
/ 12 мая 2011

Поскольку "stdafx.h" должно быть первым включением в .cpp файлах , а не где-либо еще.

1 голос
/ 12 мая 2011

Я не знаю код предварительно скомпилированного заголовка, но я предполагаю, что он содержит «#pragma Once», который имеет тот же эффект, но работает только в VS (по крайней мере, он не стандартный). Я помню, как мастер создал MFC-файлы, используя их.

1 голос
/ 12 мая 2011

Обычно stdafx.h включается только один раз для каждого файла cpp, как первый оператор, и обычно никакие другие файлы не будут включать его. Таким образом, шансы на рекурсивное включение stdafx.h минимальны, поэтому «ненужность» включаемого охранника.

Я бы все же посоветовал использовать один, на всякий случай, или потенциально использовать #pragma once в верхней части файла.

...