На С это будет выглядеть, например, так. Причем я тут вполне могу выбирать частоту мигания :)
while(1)
{
for(uint32_t i=0;i<10000;i++)
{;}
PORTA ^= 1;
}
На самом деле, я был не прав на счет конкретно своего (keil arm compiler), просто мне было лень хорошенько погуглить.
Я вчера потратил пару часов и смонстрячил более-менее переносимое решение. По-крайней мере, сторонние хедеры я могу заключать в прагмы.
Но вот что делать со сторонними сишниками — пока не знаю.
Я очень стараюсь убирать все ворнинги компилятора, но довольно часто ничего не могу поделать с двумя:
statement is unreachible и pointless comparison between unsigned value and zero. И вот почему.
Я в коде (embedded) часто использую самопальный assert, который сводится к следующему do { if(! (statement) ) { while(1); } } while(0)
так я сразу в отладчике вижу, на какой строчке остановилось выполнение. Но если этот ассерт вставлен, например, в одной из веток switch'a — компилятор ругается.
Второй ворнинг в основном вылезает из шаблонов, когда при проверке одно из шаблонных значений оказывается нулем.
А из-за чудного компилятора, который выдает ворнинг на коды в .h-файлах при КАЖДОМ ВКЛЮЧЕНИИ этого .h-файла, вывод иногда просто весь в ворнингах.
Это меня очень огорчает, но что делать я не очень представляю. Не давить же эти ворнинги?
Ленивая загрузка сессии позволит вам быстро запускать браузер с несколькими вкладками, из которых загружаться будет только активная, а остальные будут ждать своего момента.
Йесс, йесс, йесс, спасибо огромное! Целый год ждал!!!
До того, как я прочитал эту статью, я думал, что книги про Ника — самые проработанные в плане теории магии.
Но теперь я передумал :) Математика решает! Больше математики!
Впринципе, мне представляются идеальными такие варианты:
1) Таб он деманд как в ФФ — вкладка грузится при открытии
2) Все вкладки при старте открываются из кэша, обновление по F5
3) Все вкладки при старте пустые, обновление по F5
Но я подозреваю, что простые пользователи два последних варианта не поймут.
while(1) { for(uint32_t i=0;i<10000;i++) {;} PORTA ^= 1; }
Я вчера потратил пару часов и смонстрячил более-менее переносимое решение. По-крайней мере, сторонние хедеры я могу заключать в прагмы.
Но вот что делать со сторонними сишниками — пока не знаю.
Но может быть есть какой-то другой способ код писать?
statement is unreachible и pointless comparison between unsigned value and zero. И вот почему.
Я в коде (embedded) часто использую самопальный assert, который сводится к следующему
do { if(! (statement) ) { while(1); } } while(0)
так я сразу в отладчике вижу, на какой строчке остановилось выполнение. Но если этот ассерт вставлен, например, в одной из веток switch'a — компилятор ругается.
Второй ворнинг в основном вылезает из шаблонов, когда при проверке одно из шаблонных значений оказывается нулем.
А из-за чудного компилятора, который выдает ворнинг на коды в .h-файлах при КАЖДОМ ВКЛЮЧЕНИИ этого .h-файла, вывод иногда просто весь в ворнингах.
Это меня очень огорчает, но что делать я не очень представляю. Не давить же эти ворнинги?
Я, вероятно, предложу глупость, но почему бы просто не использовать компилятор в «составе» PVS Studio?
Хотя стабильной ветке до 12ой оперы пока еще далеко :)
Но это не страшно.
Йесс, йесс, йесс, спасибо огромное! Целый год ждал!!!
Это мне кажется более интуитивным, чем присвоение истинного имени (которое воспринимается скорее как неизменяемый уникальный идентификатор).
Но теперь я передумал :) Математика решает! Больше математики!
UPD: (прочел ваш комментарий выше) и если оперативки всего два гига.
1) Таб он деманд как в ФФ — вкладка грузится при открытии
2) Все вкладки при старте открываются из кэша, обновление по F5
3) Все вкладки при старте пустые, обновление по F5
Но я подозреваю, что простые пользователи два последних варианта не поймут.