Могу ли я указать элементы динамически выделенного массива с макро константой в C ++?
Краткий ответ: Да!
Причина: Макросы, указанные с помощью директива #define
вычисляется, а заменяется оцененными значениями на препроцессор , то есть до , с которым фактический компилятор начинает работать код. Таким образом, для вашей (предыдущей) строки #define SIZE 25
код:
int* ptr = new int[SIZE];
для компилятора будет в точности эквивалентным :
int* ptr = new int[25];
На самом деле такое использование макросов довольно распространено - например, в коде, который должен быть собран для разных платформ, где значение SIZE
будет варьироваться между такими сборками. Например, можно условно определить SIZE
следующим образом:
#ifdef PLATFORM25
#define SIZE 25
#else
#define SIZE 50
#endif
Или можно даже определить макрос SIZE
с помощью параметра командной строки компилятора - переключить что-то как (в зависимости от компилятора):
/DSIZE=25