Код: Выделить всё
#ifdef MAIN_C
#define MAIN_EXTERNAL
#else
#define MAIN_EXTERNAL extern
#endif // MAIN_C
//переменные
MAIN_EXTERNAL type var;
Код: Выделить всё
#define MAIN_CКод: Выделить всё
#ifdef MAIN_C
#define MAIN_EXTERNAL
#else
#define MAIN_EXTERNAL extern
#endif // MAIN_C
//переменные
MAIN_EXTERNAL type var;
Код: Выделить всё
#define MAIN_CКод: Выделить всё
const int A = 42;
const int B = A; /* <- Ошибка: инициализатор должен быть константным выражением! */
Код: Выделить всё
extern int a;Код: Выделить всё
int a = 42;Код: Выделить всё
int a;Код: Выделить всё
inline int a = 42;Хм, это было интересно.KorbenDallas писал(а):Переменные, объявленные с `const`, в языке С (в отличие от С++) не являются константами времени компиляции
Код: Выделить всё
static const uint32_t R_POT_H = 4700; // Pot pull-up resistor
static const uint32_t R_POT = 100000; // Pot resistance
// TODO: calibration settings for potentiomenters
static const int32_t R_POT_TH = 67; // Experimental threshold
static const int32_t R_POT_MAX = (((ADC_MAX) * R_POT / (R_POT + R_POT_H)) - R_POT_TH);разница появляется в тех случаях, когда создаются указатели на эти объявления - хоть Си является языком нестрогой типизации, в большинстве компиляторов предусмотрены варнинги для формально несовпадающих типов, что иной раз сильно выручает.WiseLord писал(а):особой разницы между #define, enum и static const я уже давно не вижу