← All posts tagged C

А почему, когда мы, очевидно неправильно, делаем вот так:

enum SomeEnum {
Fuck, You, C_language
}; 

enum OterEnum {
Other, Fucking, Shit
};

enum SomeEnum var = Shit;

То ебаный компилятр даже не выдает ворнингов? Нахуй вообще нужен этот беспомощный enum? Чем он пиздаче тупых констант? Какой смысл в имени для enum вообще?

C ?

А есть у нас qsort только передающая сравнивающей функции дополнительный параметр ?
типа
void qsort(void *base, size_t nmemb, size_t size,
int(compar)(const void , const void , void ),
void *);
Ну как обычно в сишке замыкания делают, передают колбек и дополнительный параметр для него, чтобы у коллбека контекст появился.

А есть джентельменский набор опций компилятора для отлова ошибок на стадии компиляции? В виде ворнингов можно -Wall -Wextra использовать, но видел, как некоторые ворнинги поднимают до ошибок. Короче, реквестирую опции для "безопасного С", как бы обсурдно это не звучало.

? C stm

Есть джва потока, первый слушает сообщения из сокета, у воторого структурка с которой он в цикле выполняет вычисления (сама структура не меняется, данные из нее используются для вычислений). Нужно организовать атомарное обновление этой структуры из первого потока (асинхронно, при приходе сообщения), так, чтобы не мешать второму потоку с ней работать. В хаскеле идеально решилось бы с STM.
Как ?

github.com
Сам наткнулся щас вот на эту хуйню. Че за ебала? Неужели разработчики гребаного ридлайна не заинклудили <stdio.h> в свои хедеры? Это специальный байтотрюк, или бага ридлайна?

Нужно из питона отправить структурированное сообщение сишке, так чтобы в сишке было легко разобрать, а в пудоне легко сгенерировать. Желательно без зависимости от внешних библиотек, генераторы кода можно.
Предложения ?

Вобщем, дописал я ту утилиту для генериции файликов, данные генерировал синусоидами. Вчера оптимизировал это дело, переписал все на Vector.Unboxed, а сегодня ради интереса написал на сишке очень упрощенный вариант того, что я генерировал на хаскеле, и знаете что? Хаскель обогнал сишку по скорости,
dist/build/genData/genData -f ~/2.csv 0,74s user 0,02s system 98% cpu 0,775 total
генерация одного файлика на хаскеле
./yoba 0,96s user 0,02s system 98% cpu 0,991 tota
а это сильно упрощенный вариант того же самого на сишке.
Прозреваю, что благодаря фьюжену в хаскеле получился глобальный убер цикл, который генерирует данные поточно, а переписанный на сишку один в один алгоритм, естественно пидарасит массивы частями, а значит нагрузка на кэш процессора.
Такие дела, братишки.

вот такая конструкция

(uint16_t)buf[i];

будет брать 16 битные числа со смещением i, то есть адрес будет buf + (i*2)
а вот такая 

(uint16_t)(uint8_t)buf[size-1];

возьмет последний байт из buf (адрес = buf + size - 1) и преобразует его в 16 битное число, занулив старший байт.

Это все верное утверждение ?

WTF me C

Прикололся и посмотрел sloccount для поделки (для общения с железкой)

Total Physical Source Lines of Code (SLOC) = 2,177
Development Effort Estimate, Person-Years (Person-Months) = 0.45 (5.43)
(Basic COCOMO model, Person-Months = 2.4 (KSLOC*1.05))
Schedule Estimate, Years (Months) = 0.40 (4.76)
(Basic COCOMO model, Months = 2.5 (person-months*0.38))
Estimated Average Number of Developers (Effort/Schedule) = 1.14
Total Estimated Cost to Develop = $ 61,150
(average salary = $56,286/year, overhead = 2.40).

Я не понял, где моя 61 тыща баксов блеать ?

gcc.gnu.org
да ну нахуй ! Как это реализовано вообще не понятно, либо это тупо лок переменных на время работы (то есть нифига не stm) толи там и правда транзакционное изменение без блокировок, но тогда как реализованы перезапуски транзакций ?

C WTF

Что-то как не пытаюсь я эту поделку написать высокоуровнево, используя указатели на функции в параметрах и все такое, а вместо сокращения кода получается сплошное усложнение, весь профит съедается усложнененным управлением памятью, там где раньше были локальные переменные (на стеке) теперь динамическая память и указатели.