- 1
- 2
- 3
- 4
p_bmp280->calib_param.dig_P2 = (s16)(((
(s16)((s8)a_data_u8[BMP280_PRESSURE_CALIB_DIG_P2_MSB]))
<< BMP280_SHIFT_BIT_POSITION_BY_08_BITS)
| a_data_u8[BMP280_PRESSURE_CALIB_DIG_P2_LSB]);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+142
p_bmp280->calib_param.dig_P2 = (s16)(((
(s16)((s8)a_data_u8[BMP280_PRESSURE_CALIB_DIG_P2_MSB]))
<< BMP280_SHIFT_BIT_POSITION_BY_08_BITS)
| a_data_u8[BMP280_PRESSURE_CALIB_DIG_P2_LSB]);
Требуется больше приведений
из библиотеки для датчика давления BOSH280.
PS s16 dig_P2;
+137
printk(KERN_CRIT "AAA\n");
Ебу и патчу.
+130
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <stat.h>
#include <conio.h>
#include <io.h>
#include <dos.h>
#include <time.h>
unsigned char kod_key;
int DIAG_F,P,R,o,u,i,i2,i3,j=0,j1,j2,i1,KPR,PNSKV,KOLS,KOLS_S,KOLS_P,KS=0,KOLT,KOLT_S,KOLT_P,MAXTM,MAXTM_S,MAXTM_P;
int F_k=0,F_PrR=0,F_N_Sv=0,K_dov,K_raz,PROZ,PROZ1,NS,NS_S,NS_P,NT_S,NT_P,NT;
long POZ,POZ1,KOLM;
float SDAT,x=0.0,v,v1,v2,DP=1.0,KK,KDAT=1.0,MS_P,MSO,MSO_P,MSO_S,MS, DS,DS_S,DS_P,MINMS,MINMS_S,MINMS_P,MAXMS,MAXMS_S,MAXMS_P,PM,PM_S,PM_P,MS_TEK;
unsigned int k=0,k1=0,k2=0;
float min,max,m[10],w2, w,w1;
clock_t t1,t2,t3,t4,t5,tc_MIN,tc_MSO;
time_t l1,l2;
struct date d;
struct time t,t_MIN,t_MSO;
int F1,F2;
union REGS rg;
//...........................
void sign()
{
i3++;
x=x+(0.00001*i3);
/*x=x+0.00244;*/
v=x;
v=(v+5)/0.00244;
v1=v/256;
v2=(int)v%256;
outportb(BASE_5710+12,v2);
outportb(BASE_5710+13,v1);
}
//...........................
K_dov=0;
kod_key=0;
d1:
while(!kod_key)
{
_AH=3;
_AL=1;
_DX=1;
geninterrupt(0x17);
kod_key=_AH;
opros();
if(MS_TEK>=2*PM)
break;
}
if(kod_key)
{
switch(kod_key)
{
case 5:
K_dov=1;
goto kon_d;
break;
default:
kod_key=0;
goto d1;
break;
}
}
if(R==1)
{
R=0;
NT++;
}
//...........................
if(kod_key)
{
switch(kod_key)
{
case 5:
K_dov=1;
goto kon_d;
break;
default:
kod_key=0;
break;
}
}
Код из реального коммерческого проекта. Все переменные объявлены глобально. Весь код в 2100 строк находится в одном файле. Комментариев нет. Внятных имён нет. Форматирования нет. Магические коэффициенты и флаги непонятных состояний повсюду. Бесконечное самоповторение. В наличии 7 функций, 2 из которых - это 85% всего кода проекта. Переходы по goto на 500 строчек в любом направлении.
+124
void UPStr(char *str)
{
while (*str)
{
switch (*str)
{
case 'а': *str = 'А'; break;
case 'б': *str = 'Б'; break;
case 'в': *str = 'В'; break;
case 'г': *str = 'Г'; break;
case 'д': *str = 'Д'; break;
case 'е': *str = 'Е'; break;
case 'ё': *str = 'Ё'; break;
case 'ж': *str = 'Ж'; break;
case 'з': *str = 'З'; break;
case 'и': *str = 'И'; break;
case 'й': *str = 'Й'; break;
case 'к': *str = 'К'; break;
case 'л': *str = 'Л'; break;
case 'м': *str = 'М'; break;
case 'н': *str = 'Н'; break;
case 'о': *str = 'О'; break;
case 'п': *str = 'П'; break;
case 'р': *str = 'Р'; break;
case 'с': *str = 'С'; break;
case 'т': *str = 'Т'; break;
case 'у': *str = 'У'; break;
case 'ф': *str = 'Ф'; break;
case 'х': *str = 'Х'; break;
case 'ц': *str = 'Ц'; break;
case 'ч': *str = 'Ч'; break;
case 'ш': *str = 'Ш'; break;
case 'щ': *str = 'Щ'; break;
case 'ъ': *str = 'Ъ'; break;
case 'ы': *str = 'Ы'; break;
case 'ь': *str = 'Ь'; break;
case 'э': *str = 'Э'; break;
case 'ю': *str = 'Ю'; break;
case 'я': *str = 'Я'; break;
case 'a': *str = 'A'; break;
case 'b': *str = 'B'; break;
case 'c': *str = 'C'; break;
case 'd': *str = 'D'; break;
case 'e': *str = 'E'; break;
case 'f': *str = 'F'; break;
case 'g': *str = 'G'; break;
case 'h': *str = 'H'; break;
case 'i': *str = 'I'; break;
case 'j': *str = 'J'; break;
case 'k': *str = 'K'; break;
case 'l': *str = 'L'; break;
case 'm': *str = 'M'; break;
case 'n': *str = 'N'; break;
case 'o': *str = 'O'; break;
case 'p': *str = 'P'; break;
case 'q': *str = 'Q'; break;
case 'r': *str = 'R'; break;
case 's': *str = 'S'; break;
case 't': *str = 'T'; break;
case 'u': *str = 'U'; break;
case 'v': *str = 'V'; break;
case 'w': *str = 'W'; break;
case 'x': *str = 'X'; break;
case 'y': *str = 'Y'; break;
case 'z': *str = 'Z'; break;
}
++str;
}
}
+141
char chByte15[3] = { pchCodeKey[0x15 * 2], pchCodeKey[0x15 * 2 + 1], 0 };
char chByte16[3] = { pchCodeKey[0x16 * 2], pchCodeKey[0x16 * 2 + 1], 0 };
char chByte18[3] = { pchCodeKey[0x18 * 2], pchCodeKey[0x18 * 2 + 1], 0 };
unsigned char uchByte15h;
unsigned char uchByte16h;
unsigned char uchByte18h;
uchByte15h = strtoul(chByte15, NULL, 16);
uchByte16h = strtoul(chByte16, NULL, 16);
uchByte18h = strtoul(chByte18, NULL, 16);
все забыли про scanf()...
+141
const char *pS;
char *pD;
// clear out new string
szNew[0] = '\0';
pS = pszValue;
pD = szNew;
// step through the string, only copying back in characters that are printable
while( *pS )
{
if( ((byte)*pS) < 32 || ((byte)*pS) > 255 )
{
pS++;
continue;
}
*pD++ = *pS++;
}
// terminate the new string
*pD = '\0';
Мало того, char в проекте подразумевается signed
+143
static int card_open(struct inode *inode, struct file *f)
{
unsigned int minor = MINOR(inode->i_rdev);
DEBUG(KERN_CRIT "Driver: card_open()\n");
f->private_data = (void *)(unsigned long long)minor;
return 0;
}
А вместо минора надобно захуярить указатель на struct some_idiot_wrote_this *asshole в f->private_data.
+143
// Exported Functions
#ifdef __cplusplus
extern "C" {
#endif
...
DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index, void* buffer, long& buflen);
#ifdef __cplusplus
};
#endif
https://pdfium.googlesource.com/pdfium/+/master/fpdfsdk/include/fpdfview.h
Intended to be C-compatible source.
+142
fstat(fd, &s);
count = s.st_size % sizeof(uint32_t) == 0 ? s.st_size : s.st_size + (sizeof(uint32_t) - s.st_size % sizeof(uint32_t));
buf = malloc(count);
/* etc */
Собственно, round up to nearest 32-bit word. Нет ли метода покрасивше?
+147
void Write_Char(char ch)
{
switch(ch)
{
case 'a':
{
set_mode_data;
set_db4_0;
set_db5_1;
set_db6_1;
set_db7_0;
strobe();
set_mode_data;
set_db4_1;
set_db5_0;
set_db6_0;
set_db7_0;
strobe();
return;
}
case 'b':
{
set_mode_data;
set_db4_0;
set_db5_1;
set_db6_1;
set_db7_0;
strobe();
set_mode_data;
set_db4_0;
set_db5_1;
set_db6_0;
set_db7_0;
strobe();
return;
}
case 'c':
{
set_mode_data;
set_db4_0;
set_db5_1;
set_db6_1;
set_db7_0;
strobe();
set_mode_data;
set_db4_1;
set_db5_1;
set_db6_0;
set_db7_0;
strobe();
return;
}
case 'd':
{
set_mode_data;
set_db4_0;
set_db5_1;
set_db6_1;
set_db7_0;
strobe();
set_mode_data;
set_db4_0;
set_db5_0;
set_db6_1;
set_db7_0;
strobe();
return;
}
case 'e':
{
set_mode_data;
set_db4_0;
set_db5_1;
set_db6_1;
set_db7_0;
strobe();
set_mode_data;
set_db4_1;
set_db5_0;
set_db6_1;
set_db7_0;
strobe();
return;
}
case 'f':
{ set_mode_data;
set_db4_0;
set_db5_1;
set_db6_1;
set_db7_0;
strobe();
set_mode_data;
set_db4_0;
set_db5_1;
set_db6_1;
set_db7_0;
strobe();
return;
}
//еще ~800 строк.
Ну почему тут только 100 строк можно вводить? Я хочу поделиться этим со всем миром, ведь это так легко - наговнокодить на Си.(из программы общения с дисплеем hd44780 для STM32)