seriu, возможно, следующие слова будут для тебя шоком, но прими их и постарайся со временем их осознать. Слушай. После объявления массива/переменной ее надо использовать, ибо зачем тогда объявлять?
seriu, возможно, следующие слова будут для тебя шоком, но прими их и постарайся со временем их осознать. Слушай. После объявления массива/переменной ее надо использовать, ибо зачем тогда объявлять?
Untonyst, Возможно для тебя это будет чудом, но когда делаешь так:
Далее мы используем только такPHP код:
public OnGameModeInit()
{
long_string[sizeof(long_string)-1] = '\n';
long_string1[sizeof(long_string1)-1] = '\n';
long_string2[sizeof(long_string2)-1] = '\n';
long_string3[sizeof(long_string3)-1] = '\0';
}
т.е long_string1,long_string2,long_string3 мы НЕЕЕЕЕ используем.PHP код:
printf("%s",long_string);
long_string1 и long_string2 таки используются из-за присвоения им значений и будут скрепляться.
Тем не менее, я проверил: если не использовать последний массив (long_string3) (как было подмечено, достаточно записать тот же '\0' в конец строки), то этот массив использоваться не будет, компилятор уберёт его содержимое из секции данных.
После объединения строк и выводе long_string в лучшем случае после long_string2 ничего не выведется, в худшем - выведется каша из случайных символов или произойдёт краш.
Как оказалось, трюк с #pragma unused не работает и компилятор удаляет строку, что есть странно, т.к. если использовать эту директиву на локальном массиве, то компилятор не уберёт его и под него будет выделено место в стеке.
Похоже, что этот трюк с #pragma unused работает только на локальных массивах. Спасибо, что заметили ошибку.
UPD: Обновил пример кода в посте на 1-й странице.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Что обозначает - 1 здесь? [sizeof(long_string)-1]
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)