- 1
- 2
Кемел Жомартович взялся за предшественника... Лидер уже не лидер.
Запасаемся попкорном.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
Кемел Жомартович взялся за предшественника... Лидер уже не лидер.
Запасаемся попкорном.
+2
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
+2
from datetime import datetime, date, time, timedelta
date= datetime.now().date()
e = datetime.now().date()-timedelta(days=1)
ee = date
delta = e-ee
for i in range(0, delta.days+1):
dfa = ee+timedelta(days=i)
dfa = dfa.strftime('%Y-%m-%d')
print(dfa)
Кусок кода с реального промышленного решения. Попросили глянуть почему не работает...лол
+2
#include <stddef.h>
#include <stdio.h>
#include <utility>
#define PLACEHOLDER char x[0];
#define FORCEINLINE
template <typename T, typename... Ts> struct MyTuple : MyTuple<Ts...>
{
FORCEINLINE constexpr MyTuple(T&& t, Ts&&... ts)
: value(std::move(t))
, MyTuple<Ts...> (std::forward<Ts>(ts)...){}
FORCEINLINE explicit MyTuple(const MyTuple<T,Ts...> &other) = default;
FORCEINLINE MyTuple(MyTuple<T,Ts...> &&other)
: MyTuple<Ts...>(std::forward<MyTuple<Ts...>>(other)),
value(std::move(other.value)){}
FORCEINLINE constexpr int size() const { return 1 + MyTuple<Ts...>::size(); }
constexpr static int sz = 1 + MyTuple<Ts...>::sz;
FORCEINLINE MyTuple<Ts...> &next(){return *static_cast<MyTuple<Ts...>*>(this);}
using tnext = MyTuple<Ts...>;
T value;
FORCEINLINE ~MyTuple() {}
constexpr static bool isitem = false;
};
struct MyTupleEmpty
{
PLACEHOLDER
FORCEINLINE constexpr int size() const { return 0; }
static constexpr int sz = 0;
~MyTupleEmpty() {}
constexpr static bool isitem = false;
};
template <typename T> struct MyTuple<T> {
FORCEINLINE MyTuple(T&& t) : value(std::move(t)){}
FORCEINLINE explicit MyTuple(const MyTuple<T> &other) = default;
FORCEINLINE MyTuple(MyTuple<T> &&other): value(std::move(other.value)){}
FORCEINLINE MyTupleEmpty &next() const{
static MyTupleEmpty empty;
return empty;
}
FORCEINLINE constexpr int size() const { return 1; }
constexpr static int sz = 1;
using tnext =MyTupleEmpty;
T value;
FORCEINLINE ~MyTuple() {}
constexpr static bool isitem = false;
};
template <class T>struct unwrap_refwrapper{using type = T;};
template <class T>struct unwrap_refwrapper<std::reference_wrapper<T>>{using type = T&;};
template <class T> using unwrap_decay_t = typename unwrap_refwrapper<typename std::decay<T>::type>::type;
template<typename... Ts>
static FORCEINLINE MyTuple<unwrap_decay_t<Ts>...> MakeTuple(Ts&&... args)
{
return MyTuple<unwrap_decay_t<Ts>...>(std::forward<Ts>(args)...);
}
struct i3{
auto setProp(auto x, i3 t = *(i3*)0)
{
typename decltype(x(*this))::tp c;
return c;
}
using tp = i3;
};
#define s(x,y) setProp([](auto c){struct xxx: decltype(c)::tp{decltype(y) x = y;using tp = xxx; decltype([] (auto xx, xxx &t = *(xxx*)0)\
{\
typename decltype(xx(t))::tp c;\
return c;\
}) setProp;auto BeginChildren(){return *this;}} d;return d;})
#define c(...) BeginChildren(),MakeTuple(__VA_ARGS__)
#define i(...) i3()
void func2()
{
auto tp = MakeTuple(
i(Window)
.s(width,10)
.s(height,20)
.c(
i(Item),
i(Item2)
.s(property1,10.0f)
)
);
printf("%d %d %f\n",tp.value.height,tp.value.width, tp.next().value.next().value.property1);
}
int main()
{
func2();
}
qml-like структура в compile time
Стандартизаторы всё пытались запретить шаблоны в локальных классах, да не вышло - понаоставляли дыр в лямбдах и decltype.
Если добавить -fpermissive, то gcc сожрёт даже с constexpr
+2
unsigned mul(unsigned a, unsigned b)
{
char arr[a][b];
return &arr[a][b] - (char *)arr;
}
Умножение через VLA
+2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NUMARGS(type,...) (sizeof((type[]){__VA_ARGS__})/sizeof(type))
#define xDEF(type) typedef struct {size_t size; type* arr; } xARR(type)
#define xARR(type) jArr_ ## type
#define A(type, ...) (xARR(type)) {NUMARGS(type,__VA_ARGS__), (type[]){__VA_ARGS__}}
#define _FOR(type, item, Arr) type item=Arr.arr[0]; for(size_t I = 0; I < Arr.size; item=Arr.arr[++I] )
// MSVC
#define xFOR(type, item, array) do{ _FOR(type, item, array) {
// GCC, Clang
#define FOR(item, array) do{ __auto_type Arr=array; _FOR(__auto_type, item, Arr) {
#define NEXT }} while(0);
#define OfArray(type,arr) (xARR(type)){sizeof(arr)/sizeof(type), arr }
typedef struct {
char *name;
int id;
} Entry;
typedef struct {const char *name;} Str;
typedef struct {int x[2]; } Pair;
xDEF(Entry);
xDEF(Str);
xDEF(Pair);
xDEF(int);
void printEntry(xARR(Entry) entries)
{
xFOR(Entry, e, entries)
printf("%s %d \n", e.name, e.id);
NEXT
}
void printSquares(xARR(int) ints)
{
FOR(v, ints)
printf("%d²=%d\n", v,(int) pow(v,2.));
NEXT
}
int main(void)
{
xARR(Entry) e = A(Entry, {"one",1}, {"two",2}, {"three",3});
printEntry(e);
puts("_______________________________________");
// можно передавать в метод непосредственно аргуметом
printSquares( A(int, 3, 7, 5, 4) );
puts("_______________________________________");
int nums[]={4,3,2,1};
// можно использовать ранее объявленный массив
printSquares(OfArray(int,nums));
// можно итерироватьcя по ранее объявленному массиву
FOR(i, OfArray(int, nums))
printf("%d-",i);
NEXT
puts("\n_______________________________________");
//вложенные циклы:
for (int k=1;k<3;k++)
FOR(i, A(Str, "kakoi", "bagor"))
FOR(j, A(int, 1111,2222,3333))
printf("%d %s %d\n", k, i.name, j);
NEXT
NEXT
puts("_______________________________________");
FOR(v, A(Pair, {1,2}, {11,12}, {20,21}))
printf("%d,%d\n", v.x[0], v.x[1]);
NEXT
puts("_______________________________________");
//проблема пустого варарга
FOR(j, A(int))
printf("%d\n", j);
NEXT
return(0);
}
https://godbolt.org/z/o9Tv9EvGx
Довёл for~each до ума.
+2
https://github.com/golded-plus/golded-plus/blob/master/golded3/gccfgg0.cpp#L162
+2
union bitdata {
struct {
unsigned int bit1 : 1;
unsigned int bit2 : 1;
unsigned int bit3 : 1;
unsigned int bit4 : 1;
unsigned int bit5 : 1;
unsigned int bit6 : 1;
unsigned int bit7 : 1;
unsigned int bit8 : 1;
};
unsigned char byte;
} first_byte, second_byte;
<...>
for ( j = 0; j < bytes_count; j++ ) {
unsigned char t;
ret = gzread( gz_fd, &t, sizeof( t ) );
if ( ret != sizeof( t ) ) {
printf( "Failed to read file %s: %s\n", argv[i], strerror( errno ) );
gzclose( gz_fd );
return EXIT_FAILURE;
}
first_byte.byte = t;
second_byte.byte = ready_bytes[j];
first_byte.bit1 = first_byte.bit1 == 0 && second_byte.bit1 == 0 ? 0 : 1;
first_byte.bit2 = first_byte.bit2 == 0 && second_byte.bit2 == 0 ? 0 : 1;
first_byte.bit3 = first_byte.bit3 == 0 && second_byte.bit3 == 0 ? 0 : 1;
first_byte.bit4 = first_byte.bit4 == 0 && second_byte.bit4 == 0 ? 0 : 1;
first_byte.bit5 = first_byte.bit5 == 0 && second_byte.bit5 == 0 ? 0 : 1;
first_byte.bit6 = first_byte.bit6 == 0 && second_byte.bit6 == 0 ? 0 : 1;
first_byte.bit7 = first_byte.bit7 == 0 && second_byte.bit7 == 0 ? 0 : 1;
first_byte.bit8 = first_byte.bit8 == 0 && second_byte.bit8 == 0 ? 0 : 1;
ready_bytes[j] = first_byte.byte;
}
Всё еще не можем понять, зачем в конце тернарник. Всё остальное уже не смущает.
+2
int f6(int* a,int k, double& min, int& n, int& count) {
int i;
min = a[0];//8
n = 0;
count = 0;
for (i = 0; i < k; i++) {
if (a[i] == 0) {
count += 1;
}
if (abs(10-abs(a[i])) < abs(min)) {
min = a[i];
n = i;
}
}
return 0;
}
Помогите!!Пожалуйста!!Надо найти ближайший элемент к 10ти и его номер, почему не работает??
+2
struct S { struct Inner { }; };
template<int N> struct X;
auto refl = ˆS;
auto tmpl = ˆX;
void f() {
typename [:refl:] * x; // OK: declares x to be a pointer-to-S
[:refl:] * x; // error: attempt to multiply int by x
[:refl:]::Inner i; // OK: splice as part of a nested-name-specifier
typename [:refl:]{}; // OK: default-constructs an S temporary
using T = [:refl:]; // OK: operand must be a type
struct C : [:refl:] {}; // OK: base classes are types
template [:tmpl:]<0>; // OK: names the specialization
[:tmpl:] < 0 > x; // error: attempt to compare X with 0
}
и да, это приняли.
https://lists.isocpp.org/sg7/2021/04/0226.php
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2320r0.pdf