Это UB?
Встретил в сишном коде такую наркоманию:
uint8_t buf[256];
uint32_t size_pic = *((uint32_t*)&buf[cnt]);
Встретил в сишном коде такую наркоманию:
uint8_t buf[256];
uint32_t size_pic = *((uint32_t*)&buf[cnt]);
Корректен ли такой код, если нужно склеить 2 байта:
unsigned char a = 0xAA;
unsigned char b = 0xFF;
unsigned short c = (a<<8)|b;
3 The integer promotions are performed on each of the operands. The type of the result is that of the promoted left operand. If the value of the right operand is negative ori s greater than or equal to the width of the promoted left operand, the behavior is undefined.
Как я понял, перед сдвигом имеет место приведение типа обоих операндов. Соответственно, результат (a<<8) уже не однобайтовый и дает 0xAA00. Если так, к какому типу приводится? От чего это зависит?
Доброго времени суток.
Пытаюсь на убунту расшарить интернет с wi-fi свистка. Делаю по ману с арча. Но hostapd упрямо не стартует:
al@vb:~$ sudo /etc/init.d/hostapd start
* Starting advanced IEEE 802.11 management hostapd [fail]
Конфигурация:
/etc/hostapd/hostapd.conf
ssid=Ubuntu
wpa_passphrase=123456789
interface=wlan0
bridge=br0
auth_algs=3
channel=7
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
/etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
# Additional daemon options to be appended to hostapd command:-
# -d show more debug messages (-dd for even more)
# -K include key data in debug messages
# -t include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""
/etc/network/interfaces
#loopbak
auto lo
iface lo inet loopback
al@vb:~$ uname -mrs
Linux 3.13.0-32-generic i686
al@vb:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:41:b8:0b
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe41:b80b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19745 errors:0 dropped:0 overruns:0 frame:0
TX packets:11823 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13103586 (13.1 MB) TX bytes:1236265 (1.2 MB)
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1128 errors:0 dropped:0 overruns:0 frame:0
TX packets:1128 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:221051 (221.0 KB) TX bytes:221051 (221.0 KB)
wlan0 Link encap:Ethernet HWaddr 00:f1:40:85:19:07
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Подскажите куда дальше двигаться, в чем собака зарыта?
Всем привет.
Хотелось бы сделать загрузочный образ для своего линукса. Чтобы потом накатывать iso на съемный носитель и работать с приспособленным под себя дистрибутивом на других машинах без необходимости установки.
С чего начать? Какова последовательность действий? В гугле мануалов для моего дистрибутива нет и все они несколько отличаются по сути. Либо предлагают воспользоваться соответствующим софтом, но это не то что нужно. Хотелось бы уяснить общие принципы, как это делается
Всем добрый вечер.
Подскажите как быть: имеется QGridLayout на основной форме, внутри ячеек компоновщика нужно разместить по одному квадратному(!) виджету так, чтобы:
Пока не получается выполнить два условия одновременно. Такое ощущение, что я вообще что-то не так делаю.
Размещение виджетов в компоновщике выглядит следующим образом:
QWidget *workspace = new QWidget(this);
setCentralWidget(workspace);
QGridLayout *grid = new QGridLayout(workspace);
grid->setRowStretch(0,1);
grid->setColumnStretch(0,1);
grid->setRowStretch(1,6500);
grid->setColumnStretch(1,1);
grid->setRowStretch(2,6500);
Figure *f1 = new Figure;
Figure *f2 = new Figure;
grid->addWidget(f1, 0,0);
grid->addWidget(f2, 0,1);
Виджеты делаю квадратными через переопределение heightForWidth(). Для наглядности пропорций вдоль границ виджета рисую рамку:
Figure::Figure(QWidget *parent) : QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint);
QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Preferred);
policy.setHeightForWidth(1);
setSizePolicy(policy);
setBaseSize(180,180);
setMinimumSize(180,180);
resize(180, 180);
}
void Figure::paintEvent(QPaintEvent *)
{
QPainter paint(this);
QRect r = geometry();
int w=r.width();
int h=r.height();
paint.drawRect(3, 3, w-5, h-5);
updateGeometry();
}
int Figure::heightForWidth(int w) const
{
QRect r = geometry();
if(w > r.height()) r.setHeight(w);
return w;
}
Как это выглядит: при пропорциональном изменении основной формы по высоте/ширине все ок - вижу квадраты. При растягивании в высоту тоже. А вот при растягивании формы в ширину квадраты становятся прямоугольниками. Короче говоря, виджеты полностью заполняют все пространство ячеек, не центрируются, квадратные пропорции при растягивании в ширину нарушаются.
Пробовал так:
grid->addWidget(f1, 0,0, Qt::AlignCenter);
grid->addWidget(f2, 0,1, Qt::AlignCenter);
Виджеты центрируются, но пропорций не меняют.
Всем привет. Помогите разобраться.
На виртуалке крутится новая lubuntu. В процессе установки vmware tools (скрипт vmware-install.pl) столкнулся с такой проблемой:
Searching for GCC...
Detected GCC binary at "/usr/bin/gcc".
The path "/usr/bin/gcc" appears to be a valid path to the gcc binary.
Would you like to change it? [no]
Searching for a valid kernel header path...
The path "" is not valid.
Would you like to change it? [yes]
В интернетах написано, что лечится доустановкой/обновлением пакетов из числа gcc/linux-headers/build-essential/libglub2.
Но все это добро самых последних версий у меня и так установлено. В чем может быть загвоздка?