Вопрос

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

#ifndef MYCFILE_C_
#define MYCFILE_C_

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

Это было полезно?

Решение

Это нужно для защиты от нескольких определений .

Другие советы

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

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

Более современная версия должна использовать:

#pragma once

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top