В вашем коде, то же самое. И в компьютерном режиме они всегда одинаковы.
Однако, думаю, если у вас есть
char str_new_o1[10000];
char str_new_02[10000];
char str_new_03[10000];
char str_new_04[10000];
char str_new_05[10000];
...
char str_new_100[10000];
Даже, может быть, они находятся в разных файлах floders различно.
И все массивы должны иметь одинаковый размер (потому что они имеют одинаковый смысл). хорошо, что они сейчас.
Но, другой день, вы обнаружите, что вам нужно изменить размер массивов, вам нужно 2000 сейчас, так что вам нужно изменить все эти массивы, one forget ,lots errors.
Теперь мы называем 1000 в Magic Number.
Хотя, если вы определяете 1000 как marco, вам нужно только один раз изменить, ничего не нужно беспокоиться.
Так, они отличаются по нашему мнению,, если у вас есть только один массив, используйте номер непосредственно, потому что не нужно марко зло, а если у вас есть много одинаковых матриц размера , используйте marco для avod магическое число.
Вы должны понимать различные этапы компиляции. Попытайтесь прочитать несколько вещей на препроцессоре. – Macmade
Да, они одинаковы - перед фактической компиляцией выполняется прямая замена символов, поэтому вы заканчиваете компиляцию одинаковых символов. Остерегайтесь кодирования '#define MAX_LEN = 10000' или' #define MAX_LEN 10000; ', поскольку они включают символы, которые вы не хотите подставлять. –
Кроме того, если вы когда-либо включаете выражение, окружайте его '()'. Например, если вы код '#define MY_CONST 5 + 10', а затем' int x = MY_CONST * 3; ', вы получите' int x = 5 + 10 * 3; 'и результат 35, а не 45. Так code '#define MY_CONST (5 + 10)'. –