2008-09-01 2 views
2

Когда Затмение создает новый файл (.c или .h файл) в проекте C редактор всегда автоматически создает #define в верхней части файла, как это: Если файл с именем «myCFile. с»там будет #define в начале файла, как этотАвто определяет в редакторах C ... Почему?

#ifndef MYCFILE_C_ 
#define MYCFILE_C_ 

я видел других редакторов сделать это, а также (Codewright и SlikEdit я думаю). #defines, похоже, ничего не делают для редактора, так как я могу просто удалить их без каких-либо проблем, и я не могу придумать, почему I захочет использовать их. Кто-нибудь знает, почему они там?

ответ

0

Я думаю, что это возврат к проблемам с включением C, в которые будут включены множественные копии источника - если вы не дотошны с целыми цепочками (один файл включает в себя n других). Проверка наличия символа и включение только в том случае, если символ определен - это был выход из этого.

+0

Есть вещи, которые должны идти в `* .h` (например,` typedef` и `struct` определения), но что _can't_ повторяться. Так что это не возврат, как вы заявляете. – vonbrand 2013-02-01 20:54:28

1

Иногда люди включают в себя весь файл .c в других файлах .c (или даже .h файлов), поэтому он имеет ту же самую цель, что предотвращает включение включенного файла несколько раз, а компилятор выделяет несколько ошибок определения ,

Странно, однако, что это было бы поведением редактора по умолчанию, чтобы поместить это во что угодно, кроме файла .h. Это была бы редко требуемая функция.

1

Более современный вариант заключается в использовании:

#pragma once 

Это довольно необычно, чтобы увидеть это в файле .c, как правило, это только в заголовочных файлах.

Смежные вопросы