Pergunta

Quando Eclipse cria um novo arquivo (.c ou .h arquivo) em um projeto C, o editor sempre cria automaticamente um #define no topo do arquivo assim:Se o arquivo for denominado 'myCFile.c', haverá um #define no início do arquivo assim

#ifndef MYCFILE_C_
#define MYCFILE_C_

Já vi outros editores fazerem isso também (Codewright e SlikEdit, eu acho).O #defines não parecem fazer nada pelo editor, pois posso simplesmente excluí-los sem nenhum problema e não consigo pensar em uma razão para isso EU gostaria de usá-los.Alguém sabe por que eles estão lá?

Foi útil?

Solução

É para se proteger contra múltiplas definições.

Outras dicas

Às vezes, as pessoas incluem um arquivo .c inteiro em outros arquivos .c (ou mesmo em arquivos .h), portanto, ele tem exatamente o mesmo propósito de evitar que um arquivo de inclusão seja incluído várias vezes e que o compilador gere vários erros de definição.

É estranho, porém, que seja o comportamento padrão de um editor colocar isso em qualquer coisa que não seja um arquivo .h.Este seria um recurso raramente necessário.

Uma versão mais moderna disso é usar:

#pragma once

É bastante incomum ver isso em um arquivo .c, normalmente está apenas nos arquivos de cabeçalho.

Eu acho que é um retrocesso dos problemas de inclusão de C, onde várias cópias da fonte seriam incluídas - a menos que você seja meticuloso com as cadeias de inclusão (um arquivo inclui n outros).Verificar se um símbolo está definido e incluir apenas se o símbolo estiver definido - era uma saída para isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top