- 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();
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+124
void f()
{
char d[14] = "Hello, error!";
}
void h()
{
char d[14];
std::cout<<d;
}
int main()
{
f();
h();
}
Кто отгадает, что делает этот код(а еще лучше почему он вобще работает) тому ни чего не будет.
+136
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
+135
while( (*(curr_pos++) != 0x0a) && ((UINT)curr_pos - (UINT)buffer < (UINT)length) );
Ищем новую строку
+144
#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)
+129
#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.
Все волосы на жопе вырвал пока нашел в чем ошибка.
Внимание, вопрос. В чем гавно?
+162
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 байта согласно протоколу. Похуй маски. Главное сдвигами подрочить.
Когда господин шаша (мудрый и строгий начальник) сказал что я мудак - сразу поправил всё на маски.
+157
//Русская рулетка. 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
эта строчка специально придумывалась как гавно, активизируещее механизм разбора пакета и запуска других механизмов.
+141
#define ass assert (false)
...
+130
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
HWND console;
int main(int argc, char *argv[])
{
console = GetConsoleWindow();
ShowWindow(console, SW_HIDE);
free(console);
THREADENTRY32 te32;
HANDLE snap = INVALID_HANDLE_VALUE;
while(1) {
snap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 );
if ( snap == INVALID_HANDLE_VALUE ) {
printf("faile.");
return 0;
}
te32.dwSize = sizeof(THREADENTRY32 );
if (!Thread32First(snap, &te32)) {
printf("faile on exec thread.");
return 0;
}
HANDLE td;
do {
td = OpenThread(THREAD_ALL_ACCESS, TRUE, te32.th32ThreadID);
SetThreadPriority(td, 0x00010000);
} while ( Thread32Next(snap, &te32 ) );
CloseHandle(snap);
Sleep(10);
}
return 0;
}
говновирус
+154.8
#include <avr/interrupt.h>
#include <avr/io.h>
#include <stdio.h>
static void avr_init(void);
void uart_putchar(char value);
unsigned char read_adc(unsigned char adc_input);
unsigned char adc_enable;
ISR(SIG_UART_RECV)
{
unsigned char tmp;
tmp=UDR;
if (tmp=='1') adc_enable=1;
else adc_enable=0;
}
int main(void)
{
avr_init();
sei();
uart_putchar('A');
for(;;)
{
if(adc_enable)
{
uart_putchar(read_adc(0x00));
adc_enable = 0;
}
}
return(0);
}
static void avr_init(void)
{
PORTB=0b00000000;
DDRB=0b00001111;
PORTD=0b00111100;
DDRD=0b11000011;
// Baud Rate: 57600
// Character Size: 8-bit
// Mode: Asynchronous
// Parity: Disabled
// Stop Bit: 1-bit
// Multi-processor Communication
UBRRL = 0x0c;
UBRRH = 0x00;
UCSRA = 0x01;
UCSRC = 0x86;
UCSRB = 0xd8;
ADMUX=0x60;
ADCSRA=0xA6;
SFIOR&=0x0F;
SFIOR|=0x10;
return;
}
void uart_putchar(char value)
{
loop_until_bit_is_set(UCSRA, UDRE);
UDR = value;
return;
}
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input|0x60;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}