É possível usar o # define a partir de outro arquivo cpp?
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.
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.
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).
Teria de colocar o seu #define
num ficheiro de cabeçalho que é então #include
D por ambos os ficheiros cpp.
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