Auto define em editores C… Por quê?
-
09-06-2019 - |
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á?
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.