Чт мар 26, 2020 13:15:59
#ifdef MAIN_C
#define MAIN_EXTERNAL
#else
#define MAIN_EXTERNAL extern
#endif // MAIN_C
//переменные
MAIN_EXTERNAL type var;
#define MAIN_C
Чт мар 26, 2020 17:26:02
Чт мар 26, 2020 21:36:55
const int A = 42;
const int B = A; /* <- Ошибка: инициализатор должен быть константным выражением! */
extern int a;
int a = 42;
int a;
inline int a = 42;
Чт мар 26, 2020 21:38:05
Чт мар 26, 2020 21:55:47
Чт мар 26, 2020 22:23:19
Хм, это было интересно.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);
Чт мар 26, 2020 22:29:58
Чт мар 26, 2020 22:38:13
Пт мар 27, 2020 06:20:14
Пт мар 27, 2020 07:47:03
разница появляется в тех случаях, когда создаются указатели на эти объявления - хоть Си является языком нестрогой типизации, в большинстве компиляторов предусмотрены варнинги для формально несовпадающих типов, что иной раз сильно выручает.WiseLord писал(а):особой разницы между #define, enum и static const я уже давно не вижу
Пт мар 27, 2020 20:55:16
Пт мар 27, 2020 20:58:15
Пт мар 27, 2020 22:42:58
Пт мар 27, 2020 22:52:30
Сб мар 28, 2020 01:11:06
Сб мар 28, 2020 07:47:27
Сб мар 28, 2020 18:16:27
Сб мар 28, 2020 18:55:52
Сб мар 28, 2020 19:51:19
Сб мар 28, 2020 20:01:06