-
+135
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
#define atfl_calc_opcode_(op) \
((op) == (ATFL_OP_PAGE_STORE|ATFL_BUF1|ATFL_PAGE_ERASE) ? 0x83 : (\
(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF2|ATFL_PAGE_ERASE) ? 0x86 : (\
(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF1|ATFL_PAGE_NO_ERASE) ? 0x88 : (\
(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF2|ATFL_PAGE_NO_ERASE) ? 0x89 : (\
(op) == (ATFL_OP_PAGE_LOAD|ATFL_BUF1) ? 0x53 : (\
(op) == (ATFL_OP_PAGE_LOAD|ATFL_BUF2) ? 0x55 : (\
(op) == (ATFL_OP_BUF_READ|ATFL_BUF1) ? 0xD4 : (\
(op) == (ATFL_OP_BUF_READ|ATFL_BUF2) ? 0xD6 : (\
(op) == (ATFL_OP_BUF_WRITE|ATFL_BUF1) ? 0x84 : (\
(op) == (ATFL_OP_BUF_WRITE|ATFL_BUF2) ? 0x87 : (\
(op) == (ATFL_OP_PAGE_ERASE) ? 0x81 : (\
(op) == (ATFL_OP_PAGE_ERASE|ATFL_PAGE_ERASE) ? 0x81 : (\
0)))))))))))))
Угадайте зачем.
dmzlj.livejournal.com,
07 Мая 2010
-
+143
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
// народ на протяжении 5+ лет жаловался что постоянно что-то в этой библиотеке Х
// криво потому что часто (с их слов) попытки вызова ее функций просто обламываются:
int module_main_function()
{
int rc = 0;
// ...
rc = libX_do_work( ... )
if (rc != OK) {
// error!!!
}
// ...
}
// теперь заглянем в инициализацию этого модуля:
int module_init()
{
int rc;
// ... кучи дежурного копи-паста для инициализации скипнуты ...
rc = libZ_init();
if (rc != OK)
{
/* error handling */
}
rc = libY_init();
if (rc != OK)
{
/* error handling */
}
libX_init(); /* лопата */
if (rc != OK)
{
/* error handling */
}
rc = libA_init();
if (rc != OK)
{
/* error handling */
}
// ... и т.д. и т.п.
}
меня жалобы одного отдела начали потиху доставать что наша библиотека (назовем ее libX) у них в модуле постоянно не работает и шо ваабще за херня. как встроили ее - так и не работает. иногда. в 80+ модулях работает как часы - ни один другой отдел не жалуется - а вот в ихнем очень специальном модуле нет.
ну я к ним подвалил. они меня сразу в рабочую функцию тыкать стали - вот тут дескать не работает. я им методично: покаж где инициализация. я когда в инициализацию заглянул, почти сразу начал роготять (давно так не смеялся, наболело за годы).
им минут пять понадобилось что бы в своем копи-паст параде рассмотреть эту глюку.
ЗЫ ответ: на строке с лопатой, не хватает "rc = ". у библиотеки есть внешняя конфигурация на отсутствии коей она у них обламывалась постоянно. и исправить скрипты свои что бы чужая конфигурация не убивалясь им похоже религия не позволяет.
Dummy00001,
04 Мая 2010
-
+124
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
void f()
{
char d[14] = "Hello, error!";
}
void h()
{
char d[14];
std::cout<<d;
}
int main()
{
f();
h();
}
Кто отгадает, что делает этот код(а еще лучше почему он вобще работает) тому ни чего не будет.
hromjo,
02 Мая 2010
-
+136
- 1
- 2
- 3
- 4
- 5
memset( fc->key, 0, KEY_LEN+1);
memset( fc->value, 0, VALUE_LEN+1);
strncpy(fc->key, key, strlen( key) + 1);
strncpy(fc->value, value,strlen( value) + 1);
совершенное непонимание работы ф-ии strncpy
benderlog,
30 Апреля 2010
-
+135
- 1
while( (*(curr_pos++) != 0x0a) && ((UINT)curr_pos - (UINT)buffer < (UINT)length) );
Ищем новую строку
dokonvog,
30 Апреля 2010
-
+144
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
#include <stdio.h>
int
predicat
(
int
i
)
{
return
i
==
2
;
}
int
main
(
)
{
int
boolean
=
0
;
for
(
int
i
=
0
;
i
<
3
&&
!
(
boolean
=
predicat
(
i
)
)
;
++
i
)
;
printf
(
"%i"
,
boolean
)
;
return
0
;
}
Есть мнение что этот код идеален - максимальная экономия горизонтального простанства. Компилируется (-std=C99)
idkravitz,
29 Апреля 2010
-
+129
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
#define SPI_BUF_SIZE 0x400
#define SDRAM_SPI_0_BUF_MISO (void*)0x100000
#define SDRAM_SPI_0_BUF_MOSI SDRAM_SPI_0_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_1_BUF_MISO SDRAM_SPI_0_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_1_BUF_MOSI SDRAM_SPI_1_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_2_BUF_MISO SDRAM_SPI_1_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_2_BUF_MOSI SDRAM_SPI_2_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_3_BUF_MISO SDRAM_SPI_2_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_3_BUF_MOSI SDRAM_SPI_3_BUF_MISO - SPI_BUF_SIZE
void test()
{
void *buf = SDRAM_SPI_3_BUF_MOSI;
void *buf1 = (void*)0x100000 - 0x400*7;
*buf = *buf1 = 0xAA;
printf("buf=%.2x \tbuf1=%.2x\n ",*buf, buf1);
return;
}
Расскажу преамбулу. Код писался под проц atmel at91sam7x
В этом процессоре есть звено SPI (serial pereferial interface). Но так как звено было спроектировано с небольшим косячком (который кстати в эррате был явно описан) буффер для каждой линии нужно было выделять в сдраме.
Сказано - сделано. Выделили. а так как средства отладки только DBGU и JTAG.
Все волосы на жопе вырвал пока нашел в чем ошибка.
Внимание, вопрос. В чем гавно?
ursus,
29 Апреля 2010
-
+162
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
char pack_LOF_OBJ(LOF_OBJ *pobj, char* pdata)
{
*pdata =(unsigned char) (pobj->value << 16);
*(pdata + 1) = (unsigned char)(pobj->value << 8 >> 16 << 8);
*(pdata + 2) = (unsigned char)(pobj->value >> 16 << 16);
return 0x01;
};
тоже писал я. Умрите в мучениях, человеки.
Упакуем 4 байта согласно протоколу. Похуй маски. Главное сдвигами подрочить.
Когда господин шаша (мудрый и строгий начальник) сказал что я мудак - сразу поправил всё на маски.
ursus,
23 Апреля 2010
-
+157
- 1
- 2
- 3
- 4
- 5
//Русская рулетка. 7 газовых, один боевой.
act_rx_session_104(&apdu);
// printf ("recv I\n");
result = (*((COLLECTORHDLR*)((collector_cfg.pFILLHDL + (unsigned char)apdu.asdu.type)->pHandler)))
((HEAD_ASDU_60870*) &apdu.asdu);
Как то писал под OS Rtems 4.6 протокол 60870-5-104
эта строчка специально придумывалась как гавно, активизируещее механизм разбора пакета и запуска других механизмов.
ursus,
23 Апреля 2010
-
+141
- 1
#define ass assert (false)
...
XAKEP,
22 Апреля 2010