Ho pensato a due tecniche per il mio #define :
Tecnica 1
SomeClass.h:
#define SOME_BUFFER_LENGTH 256
class SomeClass {
/* ... */
};
Tecnica 2
config.h:
#define SOME_BUFFER_LENGTH 256
#define SOME_OTHER_THING_USED_ELSEWHERE 23
SomeClass.h:
#include "Config.h"
#ifndef SOME_BUFFER_LENGTH
#define SOME_BUFFER_LENGTH <Default Value>
#endif
class SomeClass {
/* ... */
};
Quali sono i pro e i contro di questi due metodi e oggettivamente per un grande progetto, quale è il migliore?
Modifica
Ciao, ho imparato due cose dai tuoi commenti e risposte:
@gnasher729: If there might be reasons to change it to a different value, then it's bad if you have to hunt down such constants in many different source files, but better to have it in a configuration file with the express intent to configure things.
e
@Phil1970: Better to use C++ constants instead of the processor.
Quindi termino con questo comportamento:
config.h:
namespace Config {
const type constant = value;
const type anotherconstant = anothervalue;
}
SomeClass.h:
#include "Config.h"
/* ... */
void somefunc() {
usefulfunc(Config::constant, /* ... */);
}
Penso che sia perfettamente adatto per un progetto OpenSource, sto aspettando il tuo punto di vista su questo!