Переменные размерные массивы в C

Вы можете попробовать использовать запрос @media, как показано ниже.

Сначала добавьте класс логотипа, а затем используйте @media, чтобы указать высоту и ширину логотипа для каждого размера устройства. В приведенном ниже примере я нацеливаюсь на устройства с максимальной шириной 320 пикселей (iPhone). Вы можете поэкспериментировать с этим до тех пор, пока не найдете наилучшее соответствие. Простой способ проверки: используйте Chrome или Firefox с проверяющим элементом. Сократите ваш браузер как можно дальше. Обратите внимание на изменение размера логотипа в зависимости от заданной вами максимальной ширины @media. Проведите тестирование на iPhone, устройствах Android, iPad и т. Д., Чтобы получить желаемые результаты.

.logo {
  height: 42px;
  width: 140px;
}

@media (max-width:320px) { 
.logo {
  height: 33px;
  width: 110px;
}
}
6
задан bdonlan 28 June 2009 в 03:24
поделиться

5 ответов

Это расширение GCC, которое текущий MSVC не поддерживает. Вы можете довольно легко заменить его в MSVC с помощью _alloca (распределение стека, которое не требует ручного освобождения со стороны программиста):

#include <malloc.h>

...

int *k = (int *)_alloca(sizeof(*k)*r);
3
ответ дан 8 December 2019 в 03:28
поделиться

Он находится в C99. MSVC поддерживает только C89.

13
ответ дан 8 December 2019 в 03:28
поделиться

Стандарт C99 добавил массивы переменной длины, но другие поставщики, такие как GCC, добавили их намного раньше.

9
ответ дан 8 December 2019 в 03:28
поделиться

Мне жаль, что это не ответ, но я хотел бы указать на потенциальную проблему с использованием массивов переменной длины. Большая часть кода, с которым я столкнулся, выглядит так:

void foo(int n)
{
    int bar[n];
    .
    .
}

Здесь нет явной проверки ошибок. Большой n может легко вызвать проблемы.

4
ответ дан 8 December 2019 в 03:28
поделиться

Это расширение GCC, которое текущий MSVC не поддерживает. Вы можете довольно легко заменить его в MSVC с помощью _alloca (распределение стека, которое не требует ручного освобождения памяти со стороны программиста)

да, но оно ограничено 1 МБ

0
ответ дан 8 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: