Вы можете сделать их static
членами класса и инициализировать их в файле реализации.
//header.h
class Hardcoded
{
public:
static int param;
};
//implementation.cpp
#include "header.h"
int Hardcoded::param = 0;
или вы можете объявить свободную переменную с extern
, которую вы инициализируете в файле реализации.
РЕДАКТИРОВАТЬ:
Вы можете продолжать использовать макросы, если вы не хотите изменять весь код, без необходимости компиляции каждый раз, когда вы хотите изменить значение:
#define PARAM Hardcoded::param
РЕДАКТИРОВАТЬ:
Теперь я понимаю, что вы имеете в виду:
#if QLZ_COMPRESSION_LEVEL == 1
state->hash[i].offset = 0;
#else
state->hash_counter[i] = 0;
#endif
В этом случае невозможно делать то, что вы хотите, и вы не должны делать это в любом случае, потому что вы нужно для компиляции разных вещей при каждом изменении определения.Так что дело не в перекомпиляции, а в том, что вам нужно перекомпилировать .