É possível usar o # define a partir de outro arquivo cpp?

Acho que o pré-processador lida com Ficheiros um a um e não consigo descobrir como fazê-lo com inclusões, por isso acho que é impossível, mas seria óptimo ouvir os pensamentos dos outros.

eu tenho em a.cpp:

#define A 1

e quero usá-lo de 2.cpp.

editar: Não posso modificar o primeiro ficheiro. Então, por agora eu apenas copiei define. Mas a questão ainda está em aberto.

Author: Yola, 2013-01-11

4 answers

Define dentro de um ficheiro de código não são vistos por outras unidades de tradução. Os ficheiros de implementação são compilados separadamente.

Tu podes

  • coloca-os num cabeçalho e inclui-os
  • use as opções do seu compilador
  • faça - o de forma sà - {[[0]} num ficheiro de implementação e declare-o quando o quiser usar extern const int A;.

Destes, eu diria a primeira opção é possivelmente a pior que se pode usar.

 17
Author: Luchian Grigore, 2018-07-04 14:19:54

Se quiser partilhar uma definição entre dois ficheiros de código, mova-a para um ficheiro de cabeçalho e inclua esse cabeçalho de ambos os ficheiros de código.

[4] Mydefines.h:
#ifndef MY_DEFINES_H
#define MY_DEFINES_H

#define A (1)
// other defines go here

#endif // MY_DEFINES_H

Fonte 1.cpp:

#include "mydefines.h"
// rest of source file

Fonte 2.cpp:

#include "mydefines.h"
// rest of source file

Também pode indicar a definição na linha de comandos do compilador. Isso pode ser fidedigno para manter o código de plataforma cruzada (que pode precisar de linhas de comando diferentes para diferentes compiladores).

 7
Author: simonc, 2013-01-11 10:18:31

Teria de colocar o seu #define num ficheiro de cabeçalho que é então #includeD por ambos os ficheiros cpp.

 4
Author: Vicky, 2013-01-11 10:18:40

Como uma forma de usar variáveis extern const.

Por exemplo:

File1.h (onde irá usar definições)

extern const int MY_DEF;

#if (MY_DEF == 1)
 //some another definitions
#endif

File2.h (onde irá definir definições)

const int MY_DEF = 1

Pro & Con:

(+): pode usar alguns valores para definir

( -): todas as definições devem ser definidas

 -1
Author: , 2014-04-24 20:22:17