[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!



Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 502 | 30 | 133
Назад Вниз Каталог Обновить

C Programming Language #18 Аноним # OP  18/02/17 Суб 17:38:54  935715  
C Programming L[...].png (78Кб, 792x1023)
Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Что читать:

- Классика от Отцов: http://www.cypress.com/file/56651/download
- Годное пособие для гуманитариев: http://c.learncodethehardway.org/book/
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/%7Eats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (он же C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт) не драфт ищем на торрентах
- Стандарт ISO/IEC 9899:2011 (он же C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- man/Dash/zealdocs

Чем конпелировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C++ Compiler: оптимизации, тысячи их.
- Visual Studio 2017 Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и неполной поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Stephen Prata "C Primer Plus, 6th Edition" (2014)
Свежая знает про C89, C99, C11, описывает различия, объемная около тысячи страниц, годная хотя есть некоторые шероховатости, с вопросами, упражнениями и ответами. Читать после K&R или до.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. Kochan "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI+CERT+C+Coding+Standard

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

Прошлые треды:

- https://arhivach.org/thread/106153/
- https://arhivach.org/thread/131949/
- https://arhivach.org/thread/140570/
- https://arhivach.org/thread/153698/
- https://arhivach.org/thread/155908/
- https://arhivach.org/thread/173837/
- https://arhivach.org/thread/180461/
- https://arhivach.org/thread/182958/
- https://arhivach.org/thread/188294/
- https://arhivach.org/thread/193780/
- https://arhivach.org/thread/198868/
- https://arhivach.org/thread/206632/
- https://arhivach.org/thread/211714/
- https://arhivach.org/thread/217128/
- https://arhivach.org/thread/223224/
- https://arhivach.org/thread/235327/
- https://arhivach.org/thread/237852/

Шапка: http://piratepad.net/bJ1SdmkZyu
Аноним 18/02/17 Суб 19:19:04  935768
Линупсовые гайдлайны - говно или заебись?
Аноним 18/02/17 Суб 19:19:56  935769
>>935768
Заебись
Аноним 18/02/17 Суб 19:39:22  935781
7020451.jpg (164Кб, 963x1340)
Почему в шапке больше нет пикрила? Годнота же, актуальная до сих пор.
Аноним 18/02/17 Суб 19:43:24  935786
>>935781
Потому что была, но тогда тред превращался в обсуждение ассемблеров.
Аноним 18/02/17 Суб 19:44:54  935790
>>935786
При чем тут ассемблеры? Там этой темы не так много относительно общей темы и примеров именно на Си.
Dmitry 18/02/17 Суб 20:09:49  935822
>>935790
Hacking it's more about Ruby and python today.
Аноним 18/02/17 Суб 20:20:29  935830
>>935822
Посмотреть бы, как атаку переполнения буфера на змее реализуют.
Книга все-таки не о крекинге. А о безопасном кодинге на Си. Плюс внятно описаны криптография и сетвой кодинг.
Dmitry 18/02/17 Суб 20:28:36  935837
>>935830
For machine-specific weaknesses use appropriate tools like C or C++.
Аноним 18/02/17 Суб 21:08:00  935864
Нуб вкатился.
ANSI C.
Открываю файл 1.txt, чтобы считывать с него по строке.
file=fopen("1.txt","r");
Также открываю 2.txt для записи:
filec=fopen("2.txt", "w");
Ранее 1.txt был записан в этой же проге, если что, а потом закрыт.
Знаю кол-во строк заранее, пишу в цикле fgets(outstr, 178, file);
Размер массива outstr 180 символов, если что.
Проверяю некоторое условие (оно внешнее, от содержимого outstr не зависит).
Если оно выполняется, то
хочу записать outstr в filec:
fputs(outstr, filec);
И ничего, файл filec пуст всегда. Я в этой программе удачно заполнил 1.txt, но не могу никак заполнить filec, и в консоль ничего вывести не могу, даже если написаь fclose.
ЧЯДНТ?
Аноним 18/02/17 Суб 21:13:01  935869
>>935864
Но вам проще будет ответить на общие вопросы, наверное. Речь о стандартной библиотеке, ОФК.
1. Можно ли одновременно открывать несколько файлов и переносить из одного в другой, сравнивать их и т.п.?
2. fgets где оставляет каретку после своей работы? Написано, что она считывает до первого символа след строки.
Т.е. три fgets подряд благополучно заполучат три строки? Ничего между ними вписывать не надо?
Аноним 18/02/17 Суб 21:21:18  935877
>>935869
1. Можно.
2. Каретка - это про печатную машинку или консоль. Позиция в FILE остается там, где закончилось считывание. Считывание заканчивается, когда заканчивается буфер или встретится символ конца строки (в зависимости от того, что случится раньше). Позиция в нижележащем файле ОС может быть где-то дальше из за кэширования прочитанных данных во внутрененм буфере FILE. Три fgets могут прочитать три строки, а могут только одну, если она длиннее буфера.

>>935864
Выкладывай минимальный собирающийся код.
Аноним 18/02/17 Суб 21:29:25  935884
>>935877
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
...
FILE file, filec;
...
/ Благополучное заполнение файла 1.txt. Имеем массив str размером strn с числами, где strn - число строк./
fclose(file);
int strm=0;
char outstr[180];
file=fopen("1.txt","r");
filec=fopen("2.txt", "w");
for (i=0; i<=strn-1; i++)
if (str>=strm)
strm=str;
if (strm==0)
return 0;
for (i=0; i<=strn-1; i++)
{
fgets(outstr, 178, file);
if (str==strm);
fputs(outstr, filec);
}
return 0;
}
Аноним 18/02/17 Суб 21:35:07  935892
Image 002.png (6Кб, 307x263)
>>935884
Аноним 18/02/17 Суб 21:35:08  935893
>>935884
Конкретная проблема в точке с запятой тут:
> if (str==strm);
Но макаба съела звездочки наверняка, поэтому там могут быть и еще какие то проблемы.
Аноним 18/02/17 Суб 21:36:44  935896
>>935893
Убрал, ничего не изменилось.
Аноним 18/02/17 Суб 21:43:10  935902
>>935896
Да, с двоеточием я обосрался. А ты уверен, что у тебя цикл работает, и строчка читается? Что ты не вышел по return чуть раньше? Если в gdb не умеешь пока, воткни printf, да побольше.
Аноним 18/02/17 Суб 21:47:15  935903
>>935902
> у тебя цикл работает
Да какой же я тупой!
У меня strs занулилась в вышецикле. Ну грёбаный писец...
Заработало, спасибо, анон.
Аноним 18/02/17 Суб 21:47:38  935905
>>935903
strn*
Фикс
Аноним 19/02/17 Вск 04:18:21  936066
философский вопрос: если искать в массиве данные, какое лучше использовать для функции имя "search" или "find"? склоняюсь к первому варианту
Аноним 19/02/17 Вск 09:26:03  936100
>>936066
Find. Что функция возвращает-то?
Аноним 19/02/17 Вск 09:34:41  936104
>>936100
Если найдено то структуру, если нет, то null.
Аноним 19/02/17 Вск 10:26:03  936124
>>935715 (OP)
>оптимизации, тысячи их.

Включая такие оптимизации, как обрезание производительносит на процессорах AMD.
Аноним 19/02/17 Вск 10:26:55  936126
>>936124
Лол, ты из /hw/ сюда закатился?
Каким образом?
Аноним 19/02/17 Вск 10:27:49  936127
>>935830
>Посмотреть бы, как атаку переполнения буфера на змее реализуют.

Атаку row hammering сбацали на ЖС.
Аноним 19/02/17 Вск 10:30:46  936129
>>936126

Я сюда не из /hw/, я сюда из-за моих попыток написать что-то на Qt.

В конце марта амд выкатывает процессоры вдвое дешевле интеловских при той же производительности и при меньшем энергопотреблении, вылезайте из танка.
Аноним 19/02/17 Вск 10:31:19  936130
>>936126

То есть, не марта, а февраля. Уже доступны для предзаказа.
Аноним 19/02/17 Вск 10:31:46  936131
>>936130
NDA до 28-го.
Нет смысла предзаказа
Аноним 19/02/17 Вск 10:50:17  936139
>>936131

NDA-то NDA, но результаты бенчей уже в сети, и фотка охуевающих оверклокеров тоже есть.

Предзаказ - это я о том, что вот оно, уже почти свершилось, и игнорировать это не надо.
Аноним 19/02/17 Вск 10:59:10  936140
>>936139
>NDA
поясни за сабж, как они дали интелу пасасать?
Аноним 19/02/17 Вск 11:00:16  936141
>>936139
Я бы не советовал бы верить этим тестам.
Ещё чуть-чуть, и станет видна настоящая картина
Аноним 19/02/17 Вск 11:00:34  936142
>>936129
>В конце марта амд выкатывает процессоры вдвое дешевле интеловских при той же производительности и при меньшем энергопотреблении
Кроме геймеров, кому на это должно быть не похуй?
Аноним 19/02/17 Вск 11:03:02  936144
>>936142
как боженька пизданул
мимо армвкатывальщик
Аноним 19/02/17 Вск 11:03:48  936145
>>936144
Давно вкатываешься? Подо что пишешь? Цели?
Аноним 19/02/17 Вск 11:13:30  936150
>>936145
Хочу USB свисток на Кортексе за 5 баксов для портирования лисапеда на ядре L4
Аноним 19/02/17 Вск 11:14:26  936151
>>936150
з.ы. ну или Plan9 завести
Аноним 19/02/17 Вск 11:24:47  936154
>>936140
>поясни за сабж, как они дали интелу пасасать?

Скоро узнаем: >>936141

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

С моей диванной точки зрения видится то, что Интел сам себе дал пососать: могли бы продавать процессоры по сильно меньшим ценам и задавить x86-подразделение АМД напрочь, вместо этого выставили такие цены, что АМД сможет нагнуть их по всем практическим характеристикам и ещё и заработать на этом.

Можешь почитать Анандтек:
http://www.anandtech.com/show/10578/amd-zen-microarchitecture-dual-schedulers-micro-op-cache-memory-hierarchy-revealed
http://www.anandtech.com/show/10585/unpacking-amds-zen-benchmark-is-zen-actually-2-faster-than-broadwell
http://www.anandtech.com/show/10591/amd-zen-microarchiture-part-2-extracting-instructionlevel-parallelism

>>936142

Например, конпеляющим программистам.

Интел постоянно пихали АМД палки в колёса своими финансовыми выворотами (можно вспомнить премию за неиспользовани АМД и бенчмарки времен Netburst), из-за них производительность дороже, чем могла бы быть в условиях честной борьбы. Когда ты будешь собирать новый ПК, ты сможешь взять себе процессор с вдвое большим числом ядер примерно по той же цене. Это может быть интересно очень многим - хотя бы тем, кто сейчас может позволить себе только двухъядерник, и при этом хочет плавную работу нескольких программ.

С другой стороны, с моей точки зрения проблема современных ПЭВМ не в вычислительной мощности, но это уже другая история.
Аноним 19/02/17 Вск 11:52:30  936170
>>936154
> проблема современных ПЭВМ не в вычислительной мощности, но это уже другая история.
Го в /b/, там создашь и раскроешь эту тему
Аноним 19/02/17 Вск 12:08:35  936177
>>936170

... в результате чего я выясню, что то, что нужно мне, никому из /b/ не нужно.
Аноним 19/02/17 Вск 12:11:04  936178
>>936177
Так чего же ты хочешь? Развитие устройств ввода/вывода?
Аноним 19/02/17 Вск 12:29:13  936182
>>936154
так хули, копитолизды не заинтересованны в улучшении продукта, их цель - агрессивная реклама. АМД малацы, Интел должен был cдохнуть еще на i286 параше
Аноним 19/02/17 Вск 12:59:40  936196
>>936178

Я хочу
-полностью опенсорсный софт в рамках одной машины,
-никакого preemptive-пердолинга хотя бы на всех ядрах, кроме главного
-математически-строгие стандарты обмена без ошибок и и без всякого legacy (форматы любых данных, протоколы и т.д.) с референсным универсальным кодом, чтобы один раз и надолго,
-математически строгую оптимизацию компиляции без багов и распараллеливание кода (основанные на математической модели процессора),
-максимально простое и прозрачное сохранение состояния всех программ в хранилище (HDD или ещё куда),
-неимпераитвный язык, структура которого будет учитывать устройство современной вычислиловки и набор типичных методик работы с устройствами,
-ГУЙ с развитой самодокументацией (любой достаточно сложный ГУЙ требует прочтения мануала, нужно всю справку встроить в ГУЙ),
-IDE с развитой самодокументацией (конверсия между различными представлениями программы, предпросмотр дерева разбора, встроенный стандарт языка, средства автоматического доказательства)
-средства языка и компилятора для обнаружения ошибок вычислений без ECC и полного дубляжа вычислений, с помощью частичного дубляжа, дешёвых проверок, хранения хэшей
- изоляция костылей для поддержки разных форматов

Если у меня всё это или большая часть этого получится, я захочу написать стек софта под несколько конкретных профессий/занятий: дизайнер, маркшейдер, доярка, студент, инженер, таксист, статист и так далее, потому что без софта ни одно благое дело, которое не тащит за собой обратную совместимость, не взлетит.

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

И ещё хочу 1:1 монитор, потому что даже 16:10 задолбало. Как ни странно, джве модели есть.
Аноним 19/02/17 Вск 13:04:31  936200
>>936182
А почему АМД не копитолизды?
Аноним 19/02/17 Вск 13:21:35  936214
>>936200

АМД тоже капиталисты, просто сейчас волею судьбы они догоняющие, и им приходится компенсировать отставание не маркетингом, а идеологией. >>936200 шутит, наверное, впрочем.

П.С. Рекламу "Атлон инсайд" помнишь? Вот и я не помню.
Аноним 19/02/17 Вск 16:53:30  936363
>>936196
>неимпераитвный язык
>ГУЙ
Поделил на ноль.
Окошки с кнопочками императивны, хоть ты упрограммируйся вконец.
Аноним 19/02/17 Вск 17:46:33  936402
>>936363
>Окошки с кнопочками императивны, хоть ты упрограммируйся вконец.

Зависит от того, как это оформить. Если ввести новые концепции в язык, то можно даже Аллаха неимперативным сделать.

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


Остальное ОК?
Аноним 19/02/17 Вск 17:48:49  936403
>>936402
> Зависит от того, как это оформить.
Хоть ты усрись, нельзя. Интерфейс априори императивен, со своими новыми концепциями можешь в /mg/ уебывать, там тебя встретят как своего.
Аноним 19/02/17 Вск 18:42:25  936447
>>936403
>императивен
это как? где вы бля таких словей набираетесь?
Аноним 19/02/17 Вск 20:21:35  936517
Снимок.PNG (26Кб, 691x809)
1.PNG (4Кб, 307x154)
>>935715 (OP)
Пытаюсь в эту вашу СИ, и вот проблема.
Написал стронгли по учебнику код, который должен сравнивать введенные строки, потом печатать самую длинную, затем её же наоборот. Так вот, в любой ситуации печатается 661304 после вывода максимальной строки, переделанный в обраточку массив идет уже без чисел. Что это?
Аноним 19/02/17 Вск 20:27:46  936523
>>936517
Надо в шапку походу уже добавить правило, что если кто-то хочет помощи по коду, пусть выкладывают минимально компилируемый код на какой-нибудь пастебин. А то почти каждый долбоёб либо сразу в тело поста копирует код, где макаба съедает все звёздочки, либо выкладывет СКРИНШОТ С ТЕКСТОМ. Первое я ещё могу понять, но второе... Блядь, ну нахуй вы это делаете.
Аноним 19/02/17 Вск 20:31:58  936527
>>936523
http://pastebin.com/usgLjiF0
Аноним 19/02/17 Вск 20:34:28  936531
>>936517
> %3d
Получил кусочек стэка принтфа.
Аноним 19/02/17 Вск 20:38:34  936535
>>936531
sooqa, забыл почистить, спасибо. Мог бы и сам догадаться
Аноним 19/02/17 Вск 20:44:21  936541
>>936447
Тi знаеш єто настолко древнея копiпаста што кажетьса што тогда энторнетов, не было:
http://rsdn.org/forum/decl/794170?tree=tree
Аноним 20/02/17 Пнд 00:03:18  936739
Вот затайпдефил я тип. А как его потом оттайпдефить? Не нужен мне больше он.
Аноним 20/02/17 Пнд 00:07:51  936741
>>936739
А зачем? Экономить память в компиляторе - это какое-то непередаваемое извращение. Нет, оттайпдефать нельзя. Что единожды затайпдефано, останется тайпдефнутым до конца текущего модуля.
Аноним 20/02/17 Пнд 00:10:12  936745
>>936741
А перетайпдефить? У меня не экономия а немного другая ситуация. Нужно для заголовков функций затайпдефить один тип, в тупую на void, а потом поменять void на нормальную структуру.
Аноним 20/02/17 Пнд 00:15:53  936748
>>936745
> А перетайпдефить?
Нет, нельзя, вообще никак. Можешь препроцессором нужный вариант выбирать разве что.

А вообще, расскажи, что сделать хочешь? Если ты хочешь скрыть детали реализации, делай в хедере:
typedef struct SomeType SomeType;
а уже в .c-файле, который со структурой работает (или в приватном хедере, если .c-файлов несколько):
struct SomeType {
...
};
Аноним 20/02/17 Пнд 00:29:19  936756
>>936748
У меня есть файл main.c, там хедеры функций, которые принимают структуру type.
Также у меня есть файл func.h, в котором функции и эта самая структура.
Делаю:
#include "func.h" // файл со структурой type и функцией "func"
typedef type low_type;
void func(low_type type); // хедер функции func

И получаю хуй, так как сначала инклюжу файл с функциями, а потом какого-то хуя идут хедеры функций. Так нельзя.
Делаю:
void func(low_type type);
#include "func.h"
typedef type low_type;

и функция принимает в себя несуществующий тип low_type;

Хотел сделать перед функциями "typedef void low_type", а потом, заинклюдив func.h, "typedef type low_type", но так нельзя.
Единственное до чего додумался, так это просто вынести структуру в отдельный файлик func_struct.h и инклюдить его перед функциями, но это не красиво.
Аноним 20/02/17 Пнд 00:44:51  936771
>>936756
> main.c, там хедеры функций
> у меня есть файл func.h, в котором функции
Ты все перепутал. В .h кладут хедеры, а в .c реализацию.
func.h:
#pragma once
typedef type low_type;
void func(low_type);
func.c:
реализация func
main.c:
#include "func.h"
компиляция:
cc main.c func.c
Аноним 20/02/17 Пнд 00:57:16  936775
>>936771
> Ты все перепутал
Нет. В основной программе main.c это тоже .h файл. Я пишу библиотеку.

Конкретно у меня в основном .h файле лежат все хедеры и реализация половины функций из этих хедеров, а в том "func.h" лежит реализация второй половины этих функций и структурка.
Можно убрать хедеры функций из func.h в этот самый func.h, но я не хочу. У меня есть одной место, где прекрасно видно все функции и комментарии к ним. Так красиво получилось, незачем портить.
Аноним 20/02/17 Пнд 02:14:08  936791
>>936775
Я тут мимо походил, но разве в этой вашей няшной не действует правило - у функции моет быть одно определение и сколько угодно объявлений? Тогда я не понимаю зачем этот человек складывает определения в хэдеры, разве что чтобы потом поиметь проблем при их инклуде в два линкуемых объектника
Аноним 20/02/17 Пнд 06:10:40  936855
>>936403
>Хоть ты усрись, нельзя.

Это в твоём мире нельзя, а в моём - можно.

>со своими новыми концепциями можешь в /mg/ уебывать, там тебя встретят как своего.

Могу съебать, а могу и не съебать. Кстати, ты (?) сам спросил.
Аноним 20/02/17 Пнд 06:45:21  936883
>императивен
аноны, нахуй вы такие пидерские слова используете?

книжн., юр. не допускающий выбора, требующий безусловного подчинения, исполнения
комп., прогр. описывающий процесс вычисления в виде последовательности команд, инструкций

вы же не петухатики
Аноним 20/02/17 Пнд 07:01:29  936889
>>936363
>Окошки с кнопочками императивны, хоть ты упрограммируйся вконец.
Поддержу этого анона. Программирование ГУЯ - линейные вычислительные процессы, обрабатывающие изменяемые данные. Никакой функциональностью здесь не пахнет.

>>936402
>Зависит от того, как это оформить. Если ввести новые концепции в язык, то можно даже Аллаха неимперативным сделать.
Любимая задача борщехлеба - на ровном месте создавать себе трудности, чтобы их героически преодолевать. Вместо того, чтобы комбинировать функциональный и императивный код, используя тот и другой там, где они нужны (как принято в Лиспе, Скале и других нормальных языках) - они выдумывают глупые концепции вроде монад и зависимых типов, удаляя гланды через задний проход.

При этом полноценный фреймворк НА СТРЕЛКАХ написать им так и не удалось.
Аноним 20/02/17 Пнд 08:16:29  936913
>>936127
> >Посмотреть бы, как атаку переполнения буфера на змее реализуют.

> Атаку row hammering сбацали на ЖС.

> Эксплойт успешно сработал на на данных системах в браузере Firefox версии 39.  Эксплотируется сама уязвимость в DRAM.  Эксплойт, не позволяет получить права администратора в системе .
Ну и нахуй оно нужно?
Аноним 20/02/17 Пнд 08:54:02  936934
>>936775
>Конкретно у меня в основном .h файле лежат все хедеры и реализация половины функций из этих хедеров

На кой ляд?

>Можно убрать хедеры функций из func.h в этот самый func.h, но я не хочу. У меня есть одной место, где прекрасно видно все функции и комментарии к ним. Так красиво получилось, незачем портить.

Съеби.
Аноним 20/02/17 Пнд 09:00:33  936938
>>936889
>борщехлеба

Незнакомый мемес.

Кто такие "они" и как "они" должны интересовать меня?
Аноним 20/02/17 Пнд 11:28:45  936974
>>936934
> На кой ляд?
А как иначе? Я бы вообще всё положил в этот основной .h файл, и был бы у меня проект из одного файла, но реализаций func.h может быть много. Каждая для своей платформы, например. В итоге, чтобы собрать мою либу под сперму, нужно просто заинклюдить "func_win.h". Охуенно же.

> Съеби.
Ну ти чего.
Алсо, я тут кое что вспомнил и могу оправдать эти действия: Функция func используется в основном .h файле, описывается в другом, func.h файле, но при этом должна быть static. Если шапка будет где-то в другом месте, то основной .h файл не сможет её использовать.
Аноним 20/02/17 Пнд 11:29:17  936975
>>936889
> 2017
> при нажатии кнопки гуй зависает пока производит вычисления
> если начать две кнопки одновременно, программа крашится
Давно во всех учебниках гуй представлен конечным автоматом, для представления которых ничего лучше фп не придумали, одни императивные мудаки лепят самописные очереди событий для самописного межтредового взаимоднйствия
Аноним 20/02/17 Пнд 11:41:55  936985
>>936756
В инклуде у тебя уже заинклудятся и тип и функция, зачем ты их опять описываешь?
Аноним 20/02/17 Пнд 13:01:20  937007
>>936974
>А как иначе?

Функции - в .c, объявы - в .h

Аноним 20/02/17 Пнд 13:54:26  937025
>>936913
> Ну и нахуй оно нужно?
Реализация эксплоита не позволяет получить права. А сама уязвимость потенциально позволяет ебать компьютер как угодно.
Аноним 20/02/17 Пнд 18:40:00  937212
>>936154
>конпеляющим программистам
Лол, у меня firefox на i5 собирается минут за 5. Максимум это в геймдеве востребована хуита будет.
Аноним 20/02/17 Пнд 19:22:19  937224
typedef struct {
int i;
int j;
} num_struct;
num _struct num;

Как мне эту структурку в одну строку заполнить? Что-то вроде num = {5, 10}; есть в сишке?
Аноним 20/02/17 Пнд 19:27:10  937225
>>937224
А ты попробовать сам не мог? Есть, именно так и заполняется. Если ты хочешь заполнить НЕ при инициализации, и тебе жизненно необходимо сделать это одной строкой, тогда num = (num_struct) { ... }; Алсо, при инициализации можно указывать конкретно, что куда присваивать: { .i = 10, .j = 20 };
Аноним 20/02/17 Пнд 19:46:36  937236
>>937225
> А ты попробовать сам не мог?
Почему? Я попробовал.
Спасибо.
Аноним 20/02/17 Пнд 20:23:43  937250
>>937236
чукча не читатель, чукча писатель
Аноним 20/02/17 Пнд 21:21:06  937270
>>937224
Ещё один вопрос на эту тему: Нет ничего плохого в забивании структуры нулями memset'ом? Т.е. "memset(num, 0, sizeof(num_struct));".
Аноним 20/02/17 Пнд 21:24:57  937273
>>937270
Нет ничего плохого. Но ты можешь сделать num = { 0 }, и компилятор сам решит, что выгодней: сделать несколько mov для маленьких структур, или заинлайнить/вызвать memset для больших.
Аноним 21/02/17 Втр 02:03:02  937383
>>937224
@struct
class Petuh(val s1: CString, val s2: CString, val s3: CString)

val petuh = stackalloc[Petuh]
!petuh = new Petuh(c"Kudah", c"Pokpok", c"Kukarek")
Аноним 21/02/17 Втр 16:52:04  937698
Дорогие си-погромисты. Обращаюсь к вам, первокурсник-тугодум. Задали прогу сделать, которая кодировку в тексте исправляет. С UTF этих ваших, да ASCII в windows-1251. Из аски в вин я более-менее смог наклепать, но из 2хбитового ютф ну никак не шарю... Направьте в нужном русле, пожалуйста!
Аноним 21/02/17 Втр 17:21:34  937712
>>937698
Возможно, тебе стоит взять какой-нибудь iconv и не ебаться вручную (если задание позволяет). Что касается UTF-8, там в старших битах первого байта кодируется количество байтов в последовательности:
(b & 0x80) == 0x00: 0xxxxxxx: 7 бит текущего байта
(b & 0xe0) == 0xc0: 110xxxxx: 5 бит текущего байта и 6 бит следующего
(b & 0xf0) == 0xe0: 1110xxxx: 4 бита текущего байта и по 6 бит из двух следующих
(b & 0xf8) == 0xf0: 11110xxx: 3 бита текущего байта и по 6 бит из трех следующих
Дополнительные байты (если первый байт их требует), выглядят как 10xxxxxx, в старших битах всегда 10, чтобы можно было узнать, что это не старт очередного символа, а середина, а младшие 6 битов используются для сборки codepoint. Можешь упростить себе жизнь, выкинув последние две проверки. В однобайтовом варианте у тебя по определению будет ASCII, а в двухбайтовом, возможно, кириллица. Добавишь пару проверок диапазонов, lookup-табличку сделаешь, и будет норм.
Аноним 21/02/17 Втр 17:23:58  937717
>>937712
Спасибо огромное! Я уже отчаялся. Мне говорили, что старшие биты нужно с 10 начинать, но я чет не понимал, зачем мне это. Теперь же все ясно и по полочкам.
Аноним 21/02/17 Втр 21:06:28  937900
>>937717
Cаси спасиба.
Аноним 22/02/17 Срд 09:10:41  938293
>>937698
>>937712

На кой ляд ему биты вертеть? Пусть возьмёт самую стандартную либу с кодировками и сделает, внутренности UTF8 изучать не нужно.
Аноним 22/02/17 Срд 10:03:12  938310
Selection015.png (22Кб, 763x230)
Аноны, не знаю как правильно поискать стиль переноса параметров функции на новую строку.
Правильно ли так делать или нет?
Аноним 22/02/17 Срд 10:22:45  938329
>>938310
оставь первый аргумент на строке функции, а последующие под ним
Аноним 22/02/17 Срд 10:26:13  938330
Начал изучать С, понравилось то что охватывает и системный и прикладной уровень.
Сейчас пишу фронтенд для сайта и стили, на сервере всё работает, как сделать, чтобы у клиента запускалось?
Аноним 22/02/17 Срд 10:30:50  938334
>>938330
google
Аноним 22/02/17 Срд 11:49:19  938389
>>938310
Как называется эта цветовая схема?
Аноним 22/02/17 Срд 12:22:48  938402
>>938389
нервныйтик личныйскетч
Darktooth for Visual Studio Code
Аноним 22/02/17 Срд 12:53:55  938411
>>938330
>прикладной уровень

НЕ ЛЕЗЬ, БЛЯТЬ, ДИБИЛ СУКА ЕБАНЫЙ - ОНО ТЕБЯ СОЖРЕТ
Аноним 22/02/17 Срд 13:55:40  938439
>>938329

IDE не будет выравнивать аргументы под первым аргументов, это неудобно.
Аноним 22/02/17 Срд 13:57:16  938440
>>938330
>ас пишу фронтенд для сайта и стили, на сервере всё работает, как сделать, чтобы у клиента запускалось?

То ли тонко, то ли толсто.

Гугли writing portable code.
Аноним 22/02/17 Срд 14:35:18  938456
>>938439
>IDE
я без ide пишу
Аноним 22/02/17 Срд 15:17:40  938473
>>938402
Спасибо.
Аноним 22/02/17 Срд 15:40:19  938488
>>938456

Notepad++ тоже не будет этого делать и другие редакторы тоже.

Только не говорм мне, что ты ручками табы и пробелы вставляешь.
Аноним 22/02/17 Срд 15:42:48  938491
>>938488
Все редакторы умеют как минимум в "тупые" автоотступы. Один раз сделал отступ - на следующей строчке он будет таким же.
Аноним 22/02/17 Срд 15:44:20  938494
>>938488
> ручками табы и пробелы вставляешь
зис, всегда отключаю автоиндент - бесит
Аноним 22/02/17 Срд 17:21:55  938557
>>938491

Только первый аргумент совсем не всегда будет над другими аргументами.

>>938494
охуетъ
Аноним 22/02/17 Срд 17:26:19  938561
>>938494
Как отключить "автоиндент" в Pelles C?
Аноним 22/02/17 Срд 17:29:53  938564
>>938561
А, всё, отключил.
Аноним 22/02/17 Срд 17:48:16  938575
>>938557
>охуетъ
ну щито поделать, я любитель vim и geany
Аноним 22/02/17 Срд 17:52:04  938577
Как эту ебалу сократить?

if(a > 0x09 && a < 0x10)
a = a + 0x06;
if(a > 0x19 && a < 0x20)
a = a + 0x06;
if(a > 0x29 && a < 0x30)
a = a + 0x06;
if(a > 0x39 && a < 0x40)
a = a + 0x06;
if(a > 0x49 && a < 0x50)
a = a + 0x06;
Аноним 22/02/17 Срд 17:59:49  938584
>>938577
никак, и почему ты пидор, не используешь иф елс?
Аноним 22/02/17 Срд 18:03:57  938586
>>938584
аааа, сука какое это у нас число больше 9 и меньше 10?
Аноним 22/02/17 Срд 18:06:08  938587
>>938584
>>938586
Мне просто нужно "перескочить" комбинации A-F.
Особенность компилятора - if=elseif.
Аноним 22/02/17 Срд 18:06:27  938588
>>938577
Дели на 9 и проверяй остаток
Аноним 22/02/17 Срд 18:07:07  938589
>>938588
А, не, хуита какая-то у тебя
Аноним 22/02/17 Срд 18:09:06  938591
иф а >= А и а <= F
Аноним 22/02/17 Срд 18:18:01  938598
Окей, похоже меня не поняли.

переменная "а" - тупой счётчик, считает от 00 до FF. Шестнадцатеричная система.
Нужно исключить, перескочить все НЕ десятичные комбинации. Убрать 0A,0B,0C,0D..... F9,FA.....FF.
Чтобы "а" выражалось исключительно цифрой без букв.

Ну хоть подскажите что гуглить мне, уже голову сломал.
Аноним 22/02/17 Срд 18:21:35  938600
>>938598
Мы все равно тебя не поняли, но вычисли, сделай табличку и забудь.
Аноним 22/02/17 Срд 18:23:05  938601
>>938598
ты наркоман, ну тебя нахуй, условие описал выше
Аноним 22/02/17 Срд 18:24:28  938603
анончик пилит стартап, лол
Аноним 22/02/17 Срд 18:25:07  938604
>>938600
Хотя да:
while (a < 0x100) { while ((a & 0xf0) >= 0xa0 || (a & 0x0f) >= 0x0a) { a++; } printf("%02x\n", a);
a++; }
Аноним 22/02/17 Срд 18:29:09  938606
>>938604
жесть
Аноним 22/02/17 Срд 18:40:39  938612
>>938604
Спасибо, анон, реально помог.
Вот так в итоге вышло:
if ((a & 0xF0) >= 0xA0 || (a & 0x0F) >= 0x0A)
a = a + 0x06;
Аноним 22/02/17 Срд 18:45:21  938614
>>938612
Лол. Если сматчится первое подвыражение (при a = 0xb0, например), то твои цифры пойдут по пизде. Если уж тебе хочется именно скипать до следующего "правильного" числа, то разбей на два if, и при совпадении в старших разрядах скипай 0x60, а не 6.
Аноним 22/02/17 Срд 20:19:28  938695
Как по-человечески обращаться к значению указателя на переменную, по указателю на структуру, в которой она находится?
Аноним 22/02/17 Срд 20:21:58  938698
>>938695
Бля, я дебил *(some_struct->some_value)
Аноним 22/02/17 Срд 23:02:01  938819
Есть тут аноны, кто в neovim пишет? У вас автокомплит по stdlib работает через deoplete?
Аноним 22/02/17 Срд 23:10:40  938825
>>938819
А, разобрался, для этого еще плагин сверху нужен.
Аноним 22/02/17 Срд 23:32:31  938839
354123542311124.PNG (10Кб, 819x246)
>>938614
Спасибо, всё сделал, работает в железе идеально.

Алсо как бы вот это ещё уплотнить (пик, макакин спам-лист вставить мешает):
Аноним 22/02/17 Срд 23:55:05  938862
А на русском есть книги?
Аноним 22/02/17 Срд 23:59:06  938865
>>938862
Все эти книги настолько старые, что уже давно обзавелись переводом. Качество хз какое.
Аноним 22/02/17 Срд 23:59:28  938866
>>938839
пздц.

побитовые операции юзай.
Аноним 23/02/17 Чтв 02:27:19  938957
>>938577
Аналог твоего кода:
if (a % 0x10 > 0x09) a += 0x06;
Если именно "проскочить" a-f до ближайшего нуля в последнем разряде, т.е. из 0x0b надо сделать 0x10:
if (a % 0x10 > 0x09) a = (a / 0x10 + 0x01) * 0x10;
Аноним 23/02/17 Чтв 11:03:51  939069
>>935715 (OP)
Каким образом в определении типа этой структуры используется тип PLIST_ENTRY до того, как даже определена структура? Как транслятор решает это?

http://www.nirsoft.net/kernel_struct/vista/LIST_ENTRY.html
Аноним 23/02/17 Чтв 11:30:22  939082
>>939069
Це ж дефайн, препроцессор подложит всё что надо.
Аноним 23/02/17 Чтв 12:25:06  939117
>>938577
оберни это
>if(a > 0x09 && a < 0x10)
>a = a + 0x06;
в функцию/макрос
Аноним 24/02/17 Птн 02:41:32  939844
Делаю упражнения из K&R. В 1.8 ("Write a program to count blanks, tabs, and newlines") наткнулся на какую-то НЕХ.
Сам листинг довольно незамысловатый: http://pastebin.com/1vRnQ3m4

Запускаю программу, пишу строку (да что угодно), завершаю комбинацией Ctrl+C. Выдаёт что-то типа:
"Blanks: 2147344387, tabs: 0, newlines: 2.". То есть, табы и переводы строк правильно считает, а с пробелами выдаёт не то.
ЧЯДНТ?
Аноним 24/02/17 Птн 02:56:44  939847
>>939844
> long blanks, tabs, newlines = 0L;
ты не инициализировал blanks и tabs
Аноним 24/02/17 Птн 03:40:01  939861
>>939847
Точно, спасибо. У меня Java головного мозга.
Аноним 24/02/17 Птн 04:45:47  939871
>>939861
Что ты несешь, поехавший? В Java так инициализировать нельзя.
http://ideone.com/OQUJP6
Как и в других языках с C-синтаксисом.
Аноним 24/02/17 Птн 09:31:28  939923
>>939871
Да, ето так.
Аноним 24/02/17 Птн 10:58:27  939953
https://bugs.chromium.org/p/project-zero/issues/detail?id=1139
https://blog.cloudflare.com/incident-report-on-memory-leak-caused-by-cloudflare-parser-bug/

Байтоёбы соснули.
Аноним 24/02/17 Птн 13:11:27  940019
>>939953
даже читать лень, гуглопараша не может в разработку по. и да, вебкит на крестах же.
Аноним 24/02/17 Птн 14:40:22  940064
>>940019
при чём тут гугл, баг в Ragel со стороны Cloudflare
Аноним 24/02/17 Птн 15:49:22  940123
>>940064

В том-то, блять, и дело, что в Ragel багов нет, просто это императивное говно в C транслируется и безопасность у него такая же, как у C.
Аноним 24/02/17 Птн 16:03:23  940137
>>940123
ну C никогда не претендовал на статус безопасного языка, какие проблемы
Аноним 24/02/17 Птн 16:35:58  940158
>>940123
просто ооп питухи не могут в байтоебство
Аноним 24/02/17 Птн 16:39:03  940159
>>940123
> в C транслируется и безопасность у него такая же, как у C
То есть, если бы он транслировался в нативный код процессора, виноват был бы процессор?
Аноним 24/02/17 Птн 16:42:49  940161
бля, поясните нахуй этот Cloudflare нужен? какя то хипстерская поебота
Аноним 24/02/17 Птн 16:54:29  940171
>>940137

Почитай статью, там синтаксис такого же уровня, как и в C. Пропустили fhold - получи пизды.

>>940159

А что, он по-твоему не транслируется в нативный код? Как ты себе это представляешь? Статью прочти, неосилятор.

>>940161

Он нужен для того, чтобы любой сайт мог защититься от ДДОСа и спама без пердолинга с хостером.
Аноним 24/02/17 Птн 17:07:40  940181
>>940171
>чтобы любой сайт мог защититься от ДДОСа
ясно, эконимия на одминах
Аноним 24/02/17 Птн 17:18:18  940188
>>940171
> Как ты себе это представляешь?
Как делают нормальные люди - берут llvm и генерят IL, из которого генерится машинный код. Транслировать в си ненужно.

> Статью прочти, неосилятор.
Я проскроллил, какой-то говноязык, какие-то криворукие студенты.
Аноним 24/02/17 Птн 17:22:08  940190
>>940171
> любой сайт мог защититься от ДДОСа
двачу он не особо помог
Аноним 24/02/17 Птн 17:29:55  940192
>>936177
Нет, ты выяснишь, что ты пидорас-байтоёб и ЭМБЕДЕД НИНУЖОН, СЪЁБЫВАЙ ОТСЮДА И ГОВНО СВОЁ ЗАБЕРИ
b vyjuj bynthtcyjuj ghj cdjb[ hjlcndtyybrjd^ dxfcnyjcnb ghj vfvfie
Аноним 24/02/17 Птн 17:46:31  940202
>>940192
С++ говорят для эмбеддеда не хуже, часто даже лучше, иногда быстрее.
Аноним 24/02/17 Птн 17:51:27  940206
>>940202
Ну если с модными JS и Lua сравнивать, то конечно не хуже.
Аноним 24/02/17 Птн 18:15:21  940222
>>940206
а че, пездоглазы из самсунга свой днищелесапед джерискрипт и разрабатывают как жс ембедед. движок на си, а сверху жс и все это говно в телевизор, лол.
Аноним 24/02/17 Птн 18:25:23  940225
>>940181

Если спам забивает весь твой даунлинк, ты можешь хоть бочку сделать.

>>940188
>Я проскроллил, какой-то говноязык

Такая же ошибка могла быть в C.

>>940190

Это ты про то, что двачевский скрытый IP откуда-то взяли, лол. Если одмен профукал IP сайта, это его проблемы.

>>940192
>Нет, ты выяснишь, что ты пидорас-байтоёб

Прочитай следующий мой пост, там о байтах ни слова.

зануда-кун 24/02/17 Птн 22:55:34  940392
сап, анон. Подскажи вкатывальщику-неосилятору. Если я учу Си и собираюсь по серьёзке упарываться им со всеми вытекающими и прочими ништяками, то стоит ли мне гуммантираю лучше изучать электротехнику, чтобы знать как шить микроконтроллеры и для каких целей их прошивать. И вообще подскажите где вообще Си полезен, кроме таких низкоуровневых вещей. Так и не понял почему он круче ассемблера. Скажи, что почитать, анон, чтобы понять куда можно си впихнуть и куда его можно впихнуть с натяжкой.
Аноним 24/02/17 Птн 23:05:22  940399
>>940392
"Язык программирования C" почитать. Он от отцов
Аноним 24/02/17 Птн 23:21:46  940406
> Если я учу Си и собираюсь по серьёзке упарываться
То есть, ты учишь язык, но не знаешь, зачем? Имей в виду, что нормально ты начнешь писать года через три, не меньше.

> стоит ли мне гуммантираю лучше изучать электротехнику
Нет. Даже если пойдешь в эмбеддед, для начала хватит понимания самых базовых вещей, которые можно за вечер прочитать в википедии.

> где вообще Си полезен
Либы, сервисы.

> почему он круче ассемблера
Си соберется на другой архитектуре, если код писал не криворукий мудак, код читабельнее и компактнее, компилятор пишет более быстрый код, чем ты (ты можешь обогнать компилятор на маленьком куске, но ты заебешься качественно оптимизировать весь код).

> куда его можно впихнуть с натяжкой
Писать для веба неприятно. Писать гуи неудобно по сравнениню с высокоуровневыми языками. В остальных случаях никто не мешает писать на Си.
Аноним 24/02/17 Птн 23:28:17  940408
>>940399
Есть же Прата для начинающих
Аноним 24/02/17 Птн 23:28:47  940410
>>940399
бладжд там есть квест 1.13 написать гистограмы. Я так и не понял как их делать, но в консольку вывел ">" в горизонтальную гистограмму, а с вертикальной дак вообще охуел там корячиться. Четыре дня думал, так и не понял, как эти ёбанные гистограммы вертикальные запилить, не подлкючая сторонних средств. Но в книге ничего вроде не написано вообще про сферу применения языка. Тупо приходится отовсюду выискивать где и что пишут на сях.
Аноним 24/02/17 Птн 23:30:17  940411
>>940406
чаю, адекват.
Аноним 24/02/17 Птн 23:31:00  940412
>>940410
> так и не понял, как эти ёбанные гистограммы вертикальные запилить
А в чем проблема? Ты не можешь посчитать на основе простейшей пропорции, стоит ли выводить в консоль заполняющий символ или проблел?
Аноним 24/02/17 Птн 23:33:27  940415
>>940406
На GTK написан GIMP. Точно Си тяжко подходит для гуишек? Опыт есть в этом? Я бы попробовал (времени навалом) но если это не имеет смысла, то и знакомиться с GTK не стоит.
Аноним 24/02/17 Птн 23:37:21  940418
>>940415
> GIMP
Я даже говорить ничего не буду.
Аноним 24/02/17 Птн 23:42:06  940422
>>940410
http://pastebin.com/MPu5mytP
То, не?
Аноним 24/02/17 Птн 23:43:33  940424
>>940412
Да, я как-то криворуко это наделал. Вроде консолька что-то выводит, но всегда что-то непонятное вылазит. Типа массив создаётся, где каждый индекс номер слова, а элемент индекса - количество букв для гистограммы. Вроде правильно проинициализировал массив, но количество строк всегда разное и не поддаётся нужной мне логике.
http://pastebin.com/v8Zbu0aN
Аноним 24/02/17 Птн 23:44:20  940425
>>940418
А чем гимп зашкварен? Норм же, не?
Аноним 24/02/17 Птн 23:46:27  940429
Image 001.png (48Кб, 750x142)
Image 002.png (1Кб, 156x146)
>>940410
А сам я сейчас сижу на квесте 1.21.
http://pastebin.com/aSz4XXif
Должна делать пикрил.
Но делает пикрил2.

>>940425
Норм
Аноним 24/02/17 Птн 23:53:43  940439
>>940429
Взоржал с малалетнего дЭбила, ббгг.
Аноним 24/02/17 Птн 23:53:55  940440
>>940429
А, я начинаю понимать по поводу своего 1.21. Предположение такое: каждый раз после нового getchar() место putchar() уходит в начало строки.
Или как всё обустроено?
Я вообще не могу представить, как C обрабатывает вводимый в консоль текст, как он понимает, когда надо начинать обрабатывать. Т.е. я нажал Enter, это вроде бы \n для C, ноон после Энтер начинает работать и Enter становится как EOF...
Аноним 24/02/17 Птн 23:54:12  940441
>>940439
Это почему?
Аноним 25/02/17 Суб 00:00:08  940446
>>940440
> каждый раз после нового getchar() место putchar() уходит в начало строки
Да не, бред какой-то
Аноним 25/02/17 Суб 00:08:48  940452
>>940440
может шиндосовская кодировка энтера воспринимается как EOF. Я же наоборот не могу найти в Убунте сочетание для EOF ctrl-z работает как стоп-сигнал какой-то
>[1]+ Stopped
Аноним 25/02/17 Суб 00:11:47  940454
>>940452
Ctrl+D
Аноним 25/02/17 Суб 00:13:11  940455
>>940454
игнорит. ctrl+c вырубает выполнение
Аноним 25/02/17 Суб 00:14:29  940457
>>940455
>игнорит
Enter и только потом Ctrl+D
Аноним 25/02/17 Суб 00:17:41  940459
>>940455
> игнорит
Ввод по умолчанию line-buffered. Enter тыкай после Ctrl+Z/Ctrl+D.

>>940429
Таб - это не 8 пробелов. Таб втыкает нужное количество пробелов до следующего табстопа. А табстопы располагаются на каждой 8-ой колонке. Т.е., один символ и таб - 8 знакомест, два символа и таб - тоже 8 знакомест, 8 символов и таб - 16 знакомест. От этого и пляши.
Аноним 25/02/17 Суб 00:18:22  940460
>>940457
чаю
Аноним 25/02/17 Суб 00:25:07  940462
>>940459
> Таб втыкает нужное количество пробелов до следующего табстопа.
никогда не любил из-за этой неопределённости табы, юзаю только пробелы
Аноним 25/02/17 Суб 01:24:40  940480
>>940460
канчаю
Аноним 25/02/17 Суб 05:17:54  940526
.PNG (24Кб, 608x442)
Хелп, аноны! Ввод строки manager пропускается. Почему?
Аноним 25/02/17 Суб 05:51:41  940528
>>940526
неактуально
Аноним 25/02/17 Суб 08:40:09  940551
>>940459
А,я понял. Спасибо, я просто не знал, как работает Tab.
Аноним 25/02/17 Суб 11:01:47  940583
>>940415
>если это не имеет смысла, то и знакомиться с GTK не стоит.
Имеет смысл, если интересно. А так писать на С с gtk гораздо медленнее, чем на том же python или javascript. Тут тебе и хоть какая-то типизация, сегфолты, если не понимаешь как что-то работает и прочие радости.
Аноним 25/02/17 Суб 11:04:52  940584
>>940123
>в Ragel багов нет
Чет в голос всегда ору, когда пишут что в %youbasoftname% багов нет.
Аноним 25/02/17 Суб 13:21:33  940670
Поясните за рекурсивные структуры вида:
typedef struct name {
name next;
name
prev;
} name;

Как их использовать? Чтобы в next действительно лежал следующий элемент, а в prev предыдущий. Гуглом ненагуглил.
Аноним 25/02/17 Суб 13:22:21  940673
>>940670
Указатели сожрала макаба, но думаю все всё поняли.
Аноним 25/02/17 Суб 13:37:45  940689
>>940670
>рекурсивные структуры
проиграл
гугли двунаправленные списки
Аноним 25/02/17 Суб 15:00:15  940762
>>940670
>Чтобы в next действительно лежал следующий элемент, а в prev предыдущий.

Пока сам не положишь туда указатели на то, что тебе нужно, ничего у тебя там не появится.

Если тебя это пугает, используй C++ и его std::list .
Аноним 25/02/17 Суб 15:33:44  940773
>>940762
В glib есть реализации нескольких коллекций
https://developer.gnome.org/glib/stable/glib-data-types.html
Аноним 26/02/17 Вск 08:35:36  941291
>>940773

Без шаблонов это боль: ОП будет кастовать gpointer во время каждого обращения.

К тому же, ОП не про двусвязный список спрашивает, а именно о том, как обращаться с этими структурами.
Аноним 26/02/17 Вск 09:10:05  941293
>>941291
Я к тому, что не обязательно ++ тащить для коллекций.
Аноним 26/02/17 Вск 14:02:21  941429
>>941293

Что значит "тащить"? Оверхед плюсов в простейших задачах околонулевой.
Аноним 26/02/17 Вск 14:16:19  941448
Снимок.JPG (46Кб, 381x297)
КАКОГО ФИГА?! Я только на пару недель отлучился выучить ассемблер, выучил кое как теперь си кажется бредом шизофреника, но тем не менее я его использую
И теперь мой код не работает. Я не понимаю почему. В области обведённой синем происходит бесконечный цикл. Не понимаю почему. Я проверял через printfы wik и width и у меня через некоторое время wik был больше width. Но цикл продолжал работать как упёртый но глупый рабочий на зло всем.
Из-за чего так? Уже 2 часа мучаюсь над этим
http://pastebin.com/HrreXvdL
Аноним 26/02/17 Вск 14:42:24  941479
>>941448
залей файл, на котором тестируешь
Аноним 26/02/17 Вск 15:15:51  941497
>>941448
> u64 width;
> u64 height;
И ведь только в прошлом треде мы говорили о том, почему вредно копировать байтики поверх структур (и переменных). У тебя 64-битная неинициализированная переменная, ты пишешь значение в младшие 32 бита (на little-endian машине), а в старших битах что? - мусор. Если по счастливому совпадению мусора нет в width, значит, виснет во внешнем цикле из-за height. Алсо, нахуя тебе вообще 64-битные размеры изображения?
Аноним 26/02/17 Вск 15:32:32  941512
>>941497
но это не объясняет того, откуда берётся бесконечный цикл
Аноним 26/02/17 Вск 15:34:25  941514
>>941512
uint64_t n = 0xffffffff00000000ULL;
while (n--) {
putchar('.');
}
Докрутится - приходи.
Аноним 26/02/17 Вск 15:35:08  941515
>>941514
но строго говоря он не бесконечный
Аноним 26/02/17 Вск 15:36:53  941517
>>941515
А я и не говорил про бесконечные циклы.
Аноним 26/02/17 Вск 15:45:56  941530
a.png (8Кб, 57x47)
>>941479
этот, только у меня бмп, а он не поддерживается двачем
Аноним 26/02/17 Вск 15:46:18  941531
>>941497
Очередной отсос байтослесарей. Всё через жопу.
Аноним 26/02/17 Вск 15:49:34  941535
>>941497
очень громкий и высокий крик разочарования но и понимания АААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА
Я всё понял! Почему-то мой мозг принял 64-битные числа за 4-байтные. От жеж дидько, какой я не внимательный иногда. Спасибо, анон.
Аноним 26/02/17 Вск 15:53:50  941541
>>941530
да уже не актуально, я просто хотел у себя запустить, было интересно, откуда там мог бесконечный цикл взяться, но походу его там не было изначально
Аноним 26/02/17 Вск 16:07:02  941559
Вот вы тут сидите конпелируете, а вот тут вот:
http://www.iso-9899.info/wiki/Books
— написано, что 'Learn C The Hard Way' суть негодная книжка и не стоит её на второе место в шапке вывешивать.
Аноним 26/02/17 Вск 17:00:35  941595
>>941559
Негодная. Написано же - "для гуманитариев". Для нормальных людей у нас есть проверенные временем альтернативы: K&R и Прата.
Аноним 26/02/17 Вск 17:02:12  941598
Image 001.png (0Кб, 225x40)
Подскажите простой способ рандома поэффективнее, чем нижеследующий.
void random(int mr[],int size,int min,int max)
{
srand(time(NULL));
int r, d;
d=max-min;
for (r=0;r<=size-1;r++)
mr[r]=rand()%d + min;
}
Данной функции передаётся массив, его размер, максимальное и минимальное значения элементов.
Если функцию вызвать три раза массивами разных размеров, но с одинаковыми min и max, то всё будет очень уныло, например, как на пикрил.
Что заменить, что добавить?

Аноним 26/02/17 Вск 17:06:58  941605
>>941598
double random(void) { return rand() / (double) RAND_MAX; } // 0.0 .. 1.0. И дальше городи эти свои (int) (random() * d) + min. Будет слегка получше.


Аноним 26/02/17 Вск 17:12:27  941613
>>941598
Ах да, srand() нужно вызывать один раз в начале программы. time() возвращает время в секундах, и если между вызовами прошло меньше секунды, то получается, что ты инициализируешь генератор одним и тем же значением, и, конечно же, получаешь одни и те же данные.
Аноним 26/02/17 Вск 17:17:13  941618
>>941595

А что-нибудь годное для гуманитариев у вас есть?
Аноним 26/02/17 Вск 17:22:25  941620
>>941605
> double random(void) { return rand() / (double) RAND_MAX; }
Это что? Функция? Её перед моей random вызывать? Т.е. ей название другое дать, да?

Аноним 26/02/17 Вск 17:25:36  941622
>>941618
K&R вполне подходит. Если сложно, предварительно можно Петцольда "Тайный язык информатики" навернуть.
Аноним 26/02/17 Вск 17:26:34  941625
>>941620
Разобрался.
Но странно, что я ни разу её не вызываю, а она как-то работает
Аноним 26/02/17 Вск 17:31:30  941636
>>941625
Лол. Нет, твоя основная проблема была >>941613 в этом. А использование RAND_MAX просто дает последовательности с менее заметными корреляциями, по сравнению с использованием остатка от деления.
Аноним 26/02/17 Вск 17:33:01  941638
>>941636
Лол, я оставил srand на месте, но только теперь srand(time(NULL)_rand());
Всё теперь стало довольно рандомным
Аноним 26/02/17 Вск 17:33:19  941639
>>941638
> srand(time(NULL)+rand())
Fix*
Аноним 26/02/17 Вск 17:47:41  941658
>>941622
>K&R вполне подходит.

Сдаётся мне, что у тебя слишком хорошее мнение о гуманитариях. Энивей, спасибо, попробую.
Аноним 26/02/17 Вск 18:25:12  941688
>>941598
Я знаю лишь как на ассемблере такое сделать. Надеюсь там можно вставлять асм код.
rdtsc ;ложит в edx:eax количество тактов, которое прошло после последнего сброса процессора
mov peremennaya,eax ;в переменную с названием peremennaya ложит значение eax, которое меняется каждый такт

Правда я могу где то ошибаться, может надо [peremennaya] написать или что-то такое.
Аноним 27/02/17 Пнд 04:06:28  942084
>>941688
>знаю лишь как на ассемблере такое сделать

>Правда я могу где то ошибаться, может надо [peremennaya] написать или что-то такое.

>или что-то такое.

> что-то такое.
Аноним 27/02/17 Пнд 05:16:35  942089
>>942084
Да чего ты к нему придираешься? Необходимость писать квадратные скобки зависит от конкретного ассемблера или от чего-то такого
Аноним 27/02/17 Пнд 05:32:15  942093
>>942089
>Да чего ты к нему придираешься?

Я просто гуманитарий-ниасилятор, который тремя постами выше от K&R охуел. Ты не представляешь, насколько таким как мы бывает в радость технаря подъебнуть, особенно насчёт ассемблера или чего-то такого.
Аноним 27/02/17 Пнд 06:41:35  942102
Есть функция, в которой многократно используется переменная с длинным названием, я хочу её сократить. Как лучше делать, так:
int var = ebat->long->name->var;
или так:
int *var = ebat->long->name->var;

Кто будет работать быстрее? Как надо делать? Надо ли делать вообще?
Аноним 27/02/17 Пнд 07:24:14  942106
>>942089
Ассемблерщик, а ты умеешь призывать RDRAND из процессоров >= Ivy Bridge или >=Excavator?
Аноним 27/02/17 Пнд 07:34:35  942107
>>941605
> chislo=((double)rand()/(double)RAND_MAX);
Рандомлю число таким способом.
Мне может вернуться единица?
Аноним 27/02/17 Пнд 09:47:04  942128
1282565121024.png (179Кб, 688x384)
>>942106
А ты умеешь? Умник, бля.
Аноним 27/02/17 Пнд 10:28:34  942137
>>942102
ты сломал мой мозг
Аноним 27/02/17 Пнд 10:35:01  942140
>>942128
Нет, но ассемблерщик же тут ты. Отличная функция, иди учи ассемблер.
Аноним 27/02/17 Пнд 10:48:16  942145
>>942102
>Кто будет работать быстрее?

Победила дружба, оптимизирующему компилятору насрать на указатели.
Аноним 27/02/17 Пнд 10:53:42  942146
>>942140
Ебать ты манька.
Аноним 27/02/17 Пнд 13:16:51  942213
Посоны, чо думаете за ncurses?
Есть ли что пизже, если да, то в чем?
Аноним 27/02/17 Пнд 13:21:20  942216
>>942107
Может.
Аноним 27/02/17 Пнд 16:27:54  942329
>>942145
> компилятору насрать на указатели.
Причем два раза. Pointer aliasing гугли.
Аноним 27/02/17 Пнд 18:02:54  942393
>>942213
Всё пишут на ncurses, вот и ты пиши и не выёбывайся.
Аноним 27/02/17 Пнд 18:07:57  942396
>>942393
Я и пишу, прост мало ли.
Аноним 27/02/17 Пнд 19:11:19  942449
>>942106
Думаю что для этого надо написать команду
rdrand
Аноним 27/02/17 Пнд 21:41:00  942524
>>942449
Как ты додумался до такого?
Аноним 27/02/17 Пнд 22:57:27  942573
>>935715 (OP)
Анон, как понять что ты готов ногой открывать дверб в любую вакансию, где нужны Сишники? Есть ли какой-то заметный УРВОЕНЬ?
Аноним 27/02/17 Пнд 23:23:04  942599
>>942573
Вот тебе три вопроса. Если на каждый ответишь без гугла - то можешь скорее всего. Если же даже вопросы вызовут WTF, то продолжай учиться.
1. Чем конвенция cdecl отличается от fastcall?
2. Дана структура struct { char a; int *b; double c; } x;
Чему равен её sizeof? Как его уменьшить?
3. В двух объектных файлах есть переменная с одним и тем же названием, в файле с main она объявлена как extern. Что произойдет при попытке собрать приложение?
Аноним 27/02/17 Пнд 23:28:00  942602
Плюсаны, нужно написать некоторую программу с графическим интерфейсом игорь типа тетриса, но показать ее работоспособность нужно на университетском древнем пека. На чем там байтоебы рисовали окошки в 2007?
Аноним 27/02/17 Пнд 23:33:36  942608
>>942599
Да, продолжу как учиться.
Аноним 27/02/17 Пнд 23:34:52  942609
>>942602
GTK+
Аноним 27/02/17 Пнд 23:40:57  942612
>>942599
> с main она объявлена как extern
Всмысле? Если название такое, то оно зарезервировано под функцию объявления её в других .c файлов командой extern из хидера, или я чего-то не понимаю.
Аноним 27/02/17 Пнд 23:41:47  942613
>>942612
fileA.c
int x = 3;
fileB.c
int x = 4;
main.c
extern int x;
Аноним 27/02/17 Пнд 23:43:21  942614
>>942613
Не знаю, как это компилировать, проблем не имею.
Аноним 27/02/17 Пнд 23:45:29  942617
>>942614
Компилируется это нормально. Вопрос на линковку причем довольно простой, на самом деле.
Аноним 27/02/17 Пнд 23:49:54  942619
>>942599
> Чем конвенция ... отличается
1) Чем угодно. Может не отличаться.
> Чему равен её sizeof? Как его уменьшить?
2) Чему угодно. Удалить из нее лишние члены.
> Что произойдет при попытке собрать приложение
3) Сборка приложения.

Правильно ответил? Меня примут?
Аноним 27/02/17 Пнд 23:54:32  942626
>>942619
Не-а.
Аноним 28/02/17 Втр 00:06:48  942632
>>942599
Правильные ответы, если кому интересно. Но лучше попытайтесь ответить сами.

1. cdecl передает аргументы на стеке в обратном порядке, fastcall - часть в регистрах, и лишь то что уже не влезет - на стеке.
2. Зависит сразу же от нескольких факторов - разрядности системы (это влияет на sizeof(int *) и размеров данных (это влияет на sizeof(double) - если CHAR_BIT != 8, то размер будет не 8). Дальше в игру включается выравнивание, его уже сами гуглите. Отключить можно через #pragma pack или в gcc через __attribute__((packed))
3. Произойдет ошибка линковки. Что-то вроде Multiple definition of ...
Аноним 28/02/17 Втр 00:09:12  942633
>>942599
Вся та хуйня, тобой написанная, к языку C не имеет отношения. Ну разве что третий вопрос немного.
Аноним 28/02/17 Втр 00:10:48  942634
>>942633
Вот правильный ответ.
Аноним 28/02/17 Втр 00:12:44  942636
>>942632
> Произойдет ошибка линковки.
В оригинальном вопросе про инициализацию не было ни слова, а без инициализации ошибок не будет, привет фортрану.
Аноним 28/02/17 Втр 00:13:43  942637
>>942636
Глобальные переменные всегда инициализируются, привет хаскелю.
Аноним 28/02/17 Втр 00:16:02  942639
>>942637
А Питону никто не передаст привет, суки.
Аноним 28/02/17 Втр 00:16:23  942641
>>942632
>3...
Сук, что за баг разума... Вроде понимаешь, что ответ такой, ибо это очевидно, но всё равно ищешь какой-то подвох.
Аноним 28/02/17 Втр 00:17:18  942642
>>942633
1. Стандартная практика в сжатые сроки определять уровень знания предметной области - задавать несколько глубинных вопросов и экстраполировать полученные ответы. Выковыривать знания каждого аспекта - слишком долго.
2. Со всеми тремя вопросами я сталкивался на практике, так что имеет. Ты не представляешь, как часто люди приводят указатель на структуру к (uint8_t *), отправляют как бинарные данные, а потом удивляются, что на другой стороне ЧОТО НИТО ПРИХОДИТ.
Аноним 28/02/17 Втр 00:17:18  942643
>>942637
Я про явную инициализацию. Неявную делает линкер. Или не делает (когда программа freestanding).
Аноним 28/02/17 Втр 00:18:44  942646
>>942643
Ок, если не инициализировать не-нулём, то никаких ошибок линковки.
Аноним 28/02/17 Втр 00:21:07  942650
>>942636
Признаю, мой косяк. Но, собственно, ответ вполне мог был бы выглядеть "если инициализируем переменные, то так, а если не инициализируем - то так". Это был бы только дополнительный плюс тебе в карму.
Аноним 28/02/17 Втр 00:34:06  942663
>>942650
Скучно. Ты бы лучше спросил, что будет, если сделать так:
#include <stdio.h>
static char foo[]; int main(void) { return printf("%zu\n", sizeof(foo)); }
Аноним 28/02/17 Втр 00:37:26  942664
>>942632
>fastcall
Да, но текущее архитектурное состояние нам же надо сохранить перед вызовом и после вызова восстановить. Один фиг оно, получается, на стек уйдёт. В чём профит? В обычном варианте ты внутри функции пихаешь на стек значения используемых регистров перед вызовом (push x R), чтобы их потом в конце функции со стека обратно в регистры записать (pop x R), плюс пушишь и попишь аргументы функции (push x A + pop x A). Итого (A + R) x 2 стековых инструкций.
В fastcall -- пихаешь на стек регистры, в которые запишешь аргументы (push x A), в конце функции восстанавливаешь регистры обратно (pop x A). Между делом пушишь и попишь оставшиеся аргументы на стек (push x K + pop x K). Итого (A + K) x 2 стековых инструкций. Получается, что профит в количестве инструкций будет только тогда, когда K < R, т.е. количество оставшихся аргументов (>= 0) меньше количества используемых функцией регистров.

Так?
Аноним 28/02/17 Втр 00:41:05  942666
>>942664
> один фиг оно, получается, на стек уйдёт
Есть функции, которые больше ничего не вызывают (leaf functions). Во многих RISC-ах даже специально существует регистр LR, хранящий адрес возврата, чтобы вообще не трогать память и работать побыстрее. Сохранять те регистры, через которые передаются аргументы, обычно не нужно, плюс часто есть еще регистры, которые сохранять не нужно. Их можно юзать и получать неплохое ускорение на коротких функциях.
Аноним 28/02/17 Втр 00:42:15  942668
>>942664
Не все регистры являются callee-saved. Если, допустим, у тебя функция одного аргумента, то он передастся в eax (или rax), ты там же в рамках регистра с ним поработаешь и через eax же вернешь. Никакого стека.
Аноним 28/02/17 Втр 00:46:54  942671
>>942668
Это какой такой фасткол использует eax/rax? Кроме тех случаев, когда компилятор каждую функцию вызывает по-разному, наиболее удобным ему способом, не следуя никаким конвенциям.
Аноним 28/02/17 Втр 00:50:50  942676
>>942671
У меня в памяти отложилось, что фасткол в этом плане не стандартизирован и каждый компилятор (идеологически) может реализовывать как хочет. В любом случае, я привел лишь синтетический пример.
Аноним 28/02/17 Втр 00:53:11  942677
>>942676
__fastcall стандартизирован на x86-64, на x86 есть распространенный стандартный __fastcall от MS и менее популярный вариант от Borland.
Аноним 28/02/17 Втр 00:54:47  942679
>>942677
Не знал, прикольно. Можно ссылочку, где об этом подробнее почитать можно?
Аноним 28/02/17 Втр 01:43:12  942695
Screenshot at 2[...].png (15Кб, 867x316)
>>942677
>__fastcall стандартизирован
Аноним 28/02/17 Втр 01:44:48  942696
>>942695
А, значит я таки был прав. Ну и заебись тогда
Аноним 28/02/17 Втр 03:03:28  942721
>>942695
Ты поехавший что ли? В стандарте си ничего нет, кроме языка. Там даже стека нет. Соглашения о вызовах стандартизируются в описании ABI процессоров.
Аноним 28/02/17 Втр 06:10:52  942746
>>942721
> в описании ABI процессоров.
Процессору похуй на твой C.
Аноним 28/02/17 Втр 07:59:25  942765
2017-02-28-0657[...].png (19Кб, 277x504)
Бля, я прям охуел сначала. Не сразу заметил ошибку. Шланг не прощает.

Есть вообще профит им компилять?
Аноним 28/02/17 Втр 08:18:41  942767
>>942765
>Есть вообще профит им компилять?
Есть профит использовать -Wall -Wextra
Аноним 28/02/17 Втр 08:21:43  942768
>>942767
Впрочем, gcc тут молчит. Я думал он лучше справляется с неинициализированными переменными.
Аноним 28/02/17 Втр 09:19:05  942784
> ref class Work
> error: 'ref' does not name a type
В студии работает, при попытке собрать с GCC получается эта хуита
Аноним 28/02/17 Втр 09:26:41  942785
>>942784
> ref class Work
Это не С и даже не С++. Это либо С++/CLI, либо С++/CX
Аноним 28/02/17 Втр 09:52:51  942806
>>942784
Линуксоеды соснули.
Аноним 28/02/17 Втр 11:14:33  942861
>>942784
>В студии работает

Студия - это IDE с кучей языков, а не компилятор.
Аноним 28/02/17 Втр 11:25:25  942866
>>942785
>>942861
Действительно, это cli.
Аноним 28/02/17 Втр 15:41:31  943019
Как codelite заставить запрашивать инпут?

Сук, мне уже пичот
Аноним 28/02/17 Втр 15:53:35  943027
>>943019

Возьми паяльник и заставь.
Аноним 28/02/17 Втр 15:55:22  943030
>>943027
Ха
Ха
Умереть и не встать.

А если по делу? Вывести-то оно выводит в консольке, а запрос ввода где?

Сложна. В документации к коделайту нужной инфы пока не нашёл
Аноним 28/02/17 Втр 16:25:22  943048
>>943030
> заставить запрашивать инпут?
> запрос ввода где?

Как-то так, думаю:
getchar()
scanf()


мимо-гуманитарий
Аноним 28/02/17 Втр 16:39:39  943068
>>943048
Толсто.

Но скорее всего - я не так выразился.

После кнопеляции и запуска написанного кода я всего лишь вижу консоль с надписью: Press any key to continue

А по идее - я должен ввести энное количество чисел, но увы
Аноним 28/02/17 Втр 17:21:24  943123
>>942765
В шланге есть -Weverything, специально чтобы ты страдал. И analyze еще есть, стоит пользоваться периодически. И -fsanitize тоже.
Аноним 28/02/17 Втр 17:32:00  943138
>>943068

Код покажи наконец.
Аноним 28/02/17 Втр 20:54:57  943350
>>936775
> Нет. В основной программе main.c это тоже .h файл. Я пишу библиотеку.
В голос. У тебя библиотека - это кучка заголовочных файлов?
Аноним 28/02/17 Втр 21:17:08  943373
>>943350
.h-only либы вполне себе существуют.
Аноним 28/02/17 Втр 21:26:33  943387
>>940206
Ты ска, ты че на Луа гонишь?
Аноним 28/02/17 Втр 21:45:32  943416
>>940222
Таких кастрировать надо.
Охуеваю от андроеда на тиви, ну блядь, ну ладно бы железо там было норм, но нет же, на самое вшывое и давлик прокручивает говнокод.
5 минут нахуярить на С гуй с линукса. Написали бы приложение для арча на арм, чтобы консолька, все нормально, вейланд.
Аноним 28/02/17 Втр 21:48:49  943424
>>943416
Если бы не сраные приложения для телевизоров, в эти телевизоры бы продолжали пихать ртос с мгновенной загрузкой и без тормозов, а не ублюдочный линукс.
Аноним 28/02/17 Втр 21:59:55  943442
>>943123
Ололо, он мне высрал три страницы ворнингов из /usr/include/cairo/cairo.h, который я использую. Причём ворнинги довольно сомнительны.
Аноним 28/02/17 Втр 22:03:08  943447
>>943442
Ну я же сказал
> чтобы ты страдал
А чтобы не страдать, ворнинги для системных либ стоит выключать. Я свой код стараюсь собирать с Weverything, даже если считаю, что компилятор излишне придирается. Единственное, что выключаю для всего проекта - высер столмана -Wno-date-time[/spoile]
Аноним 28/02/17 Втр 22:10:13  943456
>>943447
> ворнинги для системных либ стоит выключать.
Как? Нагуглить не смог. Впрочем, после того, как я внёс pkg-config в "``" вместо "$()" никогда не понимал этой прыщемагии, шланг уже на кайру не ругался.
Аноним 28/02/17 Втр 22:19:20  943472
>>943447
>ворнинги для системных либ стоит выключать.
И да, шлангист, подскажи такую вещь. Шланг очень много ругается на unused functions, unused parameter, как отключить эти ворнинги?
Аноним 28/02/17 Втр 22:31:42  943490
>>943456
Не обращай внимания на унтера и собирай с
gcc -Wall -Wextra
как посоны делают.
Аноним 28/02/17 Втр 22:32:28  943491
>>943490
Или clang, они совместимы на самом деле, а вот поехавшие ворнинги не нужны.
Аноним 28/02/17 Втр 22:33:42  943493
>>943472
Эти ворнинги не стоет отключать, программа у тебя не годится, либо выпиливай функции либо используй. Доделывай.
Аноним 28/02/17 Втр 22:34:19  943494
>>943472
Неиспользуемые параметры в колбеках затыкаются чем-нибудь типа: #define UNUSED_PARAM(x) ((void) (x)), а неиспользуемых функций у тебя быть не должно.
Аноним 28/02/17 Втр 22:43:10  943500
>>943416
Пиздец как у меня горит со СМАРТ ТВ, которое на каждое нажатие пульта по 2 минуты реагирует.
НЕНАВИСТЬ
Аноним 28/02/17 Втр 23:03:15  943515
>>943493
>>943494
Неиспользуемые функции они на будущее, ещё не реализовал части программы с ними. Тоже самое с неиспользуемыми переменными, функционал с ними просто ещё не запилен. Но зачем мне каждый раз при конпеляции видеть эту информацию? Сейчас отключу, потом включу.
Аноним 28/02/17 Втр 23:12:31  943519
>>943424
Но приложения все-таки могут быть полезными. На линукс все есть, новое не сложно сделать, а вот через давлик/арт это дохуя ресурсоемко, у меня на пк столько памяти не жрет сколько на вшивом смартфоне, а у тв еще и разрешение большое.
Комп может жрать меньше 100мб с загруженой графической оболочкой. Андроид почти 300 со старта жрет.
>>943500
У моего говно-тв реагирует норм, долго реагирует именно если начать набирать номер канала. Но утубик и все остальное совершенно не работает, вообще. Только одно приложения с говноканалами кое как тащит.
А с флешки почти норм (на самом деле нет).
Хорошо не мой телик, Я бы такой не покупал, лучше взять монитор хороший и отдельно приставку с хорошим железом которую можно будет заменить когда в говно скатится, а монитор - это почти всегда на порядок лучше изображение.

Вот только почему андроид не понял.

Годные смарт тв начинаются от 3К бачей думаю, но переплачивать за смарт не знаю зачем, лучше взять панель с HDMI 2.1 DP 1.4 SuperMHL и ебатся уже только с приставками.
Аноним 28/02/17 Втр 23:14:11  943520
>>943447
> Я свой код стараюсь собирать с Weverything, даже если считаю, что компилятор излишне придирается.
Кастишь unsigned int в int при, например, сложении одного с другим? Меня шланг завалил подобными претензиями, но по-моему кастинг тут выглядит плохо.
Аноним 28/02/17 Втр 23:15:02  943523
>>943515
А зачем ты функции эти компилируешь?
Закоментируй, скрой макросами, вынеси в отдельный файл и убери из мейкфайла.
Компилятор ведь прав что ты муть компилируешь, убери, и компилируй что уже работает.
Аноним 28/02/17 Втр 23:16:58  943526
>>943520
(int) перед выражением написать это каст? Надо явно указывать всегда, или перевести другую переменную в просто инт, так должно производительнее выйти, потому как никаких конвертаций не будет.
Аноним 28/02/17 Втр 23:22:37  943532
>>943526
> (int) перед выражением написать это каст?
А что же ещё?

У меня в коде много участков с выражениями подобного типа:
a = b + c;
Что выглядит вполне няшно. А так:
a = b + (int32_t)c;
Уже начинает раздражать.
Аноним 28/02/17 Втр 23:31:53  943544
>>943520
> Кастишь unsigned int в int
Ты такой кастишь, а в результате у тебя отрицательное число. Поэтому, хоть язык и не требует, лучше для себя же пометочку сделать, мол, вот кастую явно, значит, и о проблемах подумал. То же и с кастами в меньшие по размеру типы.
Аноним 28/02/17 Втр 23:34:11  943547
>>943523
Давай проще: Возможно отключить эти ворнинги не завезли?
Аноним 28/02/17 Втр 23:34:43  943548
>>943547
> Возможно
Возможности
fix
Аноним 28/02/17 Втр 23:35:39  943550
>>943547
-Wno-название-ворнинга
Аноним 28/02/17 Втр 23:36:49  943552
>>943550
Добра :3
Аноним 28/02/17 Втр 23:37:58  943553
>>943532
>Что выглядит вполне няшно. А так:
>a = b + (int32_t)c;
Не правильно пишешь, формат задается один раз перед всем выражением.
А вот int+uint вернет мусор, тут и надо указывать (int) в начале выражения один раз.
Или если int+float тоже форматировать надо в флоат.
Аноним 28/02/17 Втр 23:39:37  943556
>>943552
man gcc
Аноним 28/02/17 Втр 23:45:57  943563
>>943553
>А вот int+uint вернет
С float все ясно, а вот интеджеры могут прокатить и без форматирования, например если добавляем к юинту отрицательный инт и результат не отрицательный.
Поэтому лучше или один всеобъемлющий инт юзать или явно конвертировать чтобы не получить неожиданых ошибок, дебажить может быть очень трудно если пропустил.
Аноним 28/02/17 Втр 23:53:43  943566
>>943563
Как быть с char и unsigned char? Строка char* скармливается конечному автомату, у которого есть потребность индексировать этим символом в массивах состояний, и отрицательные индексы ему конечно не нужны. Тут методом тыка за секунды решается, но интересно, как оно по канону.
Аноним 28/02/17 Втр 23:56:09  943567
>>943566
Очевидно, что если у тебя 8-битная кодировка, то и строки unsigned char. А если 7-битная ASCII (или какой-нибудь ASCII-совместиый UTF-8, и тебе насрать на все кроме ASCII), то можно и проверить, не притащили ли лишнего в старшем бите.
Аноним 01/03/17 Срд 00:02:49  943571
>>943566
unsigned юзать для ясности, конечно отрицательных значений там быть не может.
static const unsigned char - так объявляется алфавит в ядре linux.
Почему обычный char работает нормально стало интересно, он конвертируется наверно тоже.
Аноним 01/03/17 Срд 00:16:52  943578
>>943566
Самое главное не сравнивай float и int или INT UINT.
Аноним 01/03/17 Срд 00:27:12  943584
int main(int argc, char argv[]){
return 0;
}
Почему так пишется, а не
unsigned int main(unsigned int argc, unsigned char
argv[]);
Ведь количество не может быть отрицательным, и возвращать отрицательный код ошибки незачем и сами строки по природе из unsigned char состоят, зачем тогда по другому принято?
Было бы гораздо проще вместо unsigned int uint писать.
Аноним 01/03/17 Срд 00:33:11  943589
>>943584
> Почему так пишется
Потому что давным давно символы были 7-битными. Отрицательный код ошибки удобен (чтобы отличать невырный синтаксис аргументов от ошибок выполнения полезной части программы, например). А вот size_t argc был бы к месту, но... обратная совместимость.
Аноним 01/03/17 Срд 00:39:54  943592
>>943584
>unsigned char argv
это бля что за наркомания?
Аноним 01/03/17 Срд 00:40:53  943593
>>943584
>unsigned int
и это что за хуйня?
Аноним 01/03/17 Срд 00:41:25  943594
Что здесь происходит вообще? Школотрон дорвался до unsigned?
Аноним 01/03/17 Срд 00:49:50  943602
>>943592
Массив строк.
>>943593
Положительный int. Читай спеки.
Аноним 01/03/17 Срд 00:52:15  943603
>>943594
Ну очень уш долго писать, uint заебись, я макросом заменяю, но выглядит как костыль, вот бы дефолт таким был.
Аноним 01/03/17 Срд 01:03:09  943607
>>943602
теперь объясняй как массив vекторов и их количество могут быть отрицательными?
Аноним 01/03/17 Срд 01:04:00  943608
>>943603
>uint заебись, я макросом заменяю
уходи
Аноним 01/03/17 Срд 01:34:30  943619
>>943607
C не имеет векторов. Это не вектор а указатель на char[].
Аноним 01/03/17 Срд 01:35:51  943620
>>943608
stdint.h
не имеет uint, а было бы удобно btw.
Что плохого в макросе?
Аноним 01/03/17 Срд 01:37:40  943622
>>943619
Вектор - это последовательность элементов, массив. В Си массивы есть. argv - это массив указателей на char.

>>943620
Если тебе сложно написать два слова, пиши только unsigned. Во-вторых, товарищ Шахиджанян ждет тебя. Или нормальный IDE. В-третьих, макросы для типов зло, используй typedef.

Аноним 01/03/17 Срд 01:41:51  943624
>>943619
arg[v] <- что означает буква v?
Аноним 01/03/17 Срд 01:43:36  943626
>>943620
>не имеет uint
потому, что он нахуй не нужен
Аноним 01/03/17 Срд 01:50:35  943630
>>943622
Это не массив а указатель на массив, значения переданые не копируются, а ты получаешь только указатель, тоесть ты можешь переопределить его внутри функции.
Аяаяй такгого не знать.
>>943622
uint короче ведь. typedef не уверен что лучше, макроса в программе уже не будет, а typedef уже в программе обрабатывается, лишние затраты, всегда проигрывал с манек брезгующих #define для констант, это ведь самая настоящая константа hardcoded в програмку, а не определяемая при исполнении с выделением памяти.
Аноним 01/03/17 Срд 01:53:33  943631
>>943630
> typedef уже в программе обрабатывается, лишние затраты
Шизик, уходи.
Аноним 01/03/17 Срд 02:00:24  943633
>>943630
>Это не массив а указатель на массив,
это указатель на массив указателей. уходи.
Аноним 01/03/17 Срд 02:04:06  943636
>>943633
Если уж придираться, то указатель на массив имеет типа "указатель на массив". А массивы в аргументах функции неявно преобразуются к указателю на первый элемент этого массива.
Аноним 01/03/17 Срд 02:06:11  943638
>>943636
нет. уходи.
Аноним 01/03/17 Срд 02:09:00  943639
>>943638
static void foo(int *x) {}
int array[1];
foo(&array);
Собери с -Wall и прочитай сообщение компилятора.
Аноним 01/03/17 Срд 02:14:10  943642
>>943639
>foo(&array);
-> foo(array)
уходи
Аноним 01/03/17 Срд 02:16:01  943643
>>943642
Откуда вы лезете?
http://ideone.com/eVc4xR
Аноним 01/03/17 Срд 02:19:53  943644
>>943643
prog.c:20:17: error: passing argument 2 of ‘not_main’ from incompatible pointer type [-Werror=incompatible-

уходи
Аноним 01/03/17 Срд 02:50:49  943656
>>943630
> всегда проигрывал с манек брезгующих #define для констант, это ведь самая настоящая константа hardcoded в програмку, а не определяемая при исполнении с выделением памяти.
Ебать дебил.
Аноним 01/03/17 Срд 02:57:32  943657
>>943656
А что не так? const int a = 3 выделяет память, компилятору нужно ее читать. Удаляется такая "константа" только с -flto.
Аноним 01/03/17 Срд 03:01:56  943659
download.png (54Кб, 707x322)
>>943657
Съеби уже нахуй отсюда со своими историями
Аноним 01/03/17 Срд 03:03:51  943660
>>943657
Просто интересно, а по каким причинам нормальный компилятор не подставит значения константы в местах использования константной переменной?
Аноним 01/03/17 Срд 03:39:07  943669
>>943624
означает вектор, но векторов в C нет, это массив argv ты обращае
>>943631
Чем дефайн плох маньк?
>>943660
Он не подставит значения манька тупая, const можно задать во время выполнения. А дефайн это впечатано в код программы.
Попробуй
int s;
scanf("%d",s);
const int d=s;
printf("%d",d);
Это такипеременная которую нельзя менять.
Аноним 01/03/17 Срд 03:46:38  943670
>>943659
Это частный случай. Алсо, память все равно выделится.
Аноним 01/03/17 Срд 03:49:54  943671
>>943659
У тебя там какой-то манямирочек, от const можно передать поинтер, от дефайна нельзя.
Аноним 01/03/17 Срд 03:54:00  943674
>>943670
> Алсо, память все равно выделится.
Да похуй, хоть 100 раз. Никакого "компилятору нужно ее читать" нет и это главное.
>>943671
Научись следить за ходом обсуждения, прежде чем влезать, а пока иди нахуй.
Аноним 01/03/17 Срд 03:57:29  943675
>>943674
>читать
Если знаешь значение константы зарание то #define как правило лучшее решение.
const же совсем не для того, и конст будет иметь свою ячейку в памяти.
Аноним 01/03/17 Срд 03:58:03  943676
http://stackoverflow.com/questions/1674032/static-const-vs-define-vs-enum#1674459
Аноним 01/03/17 Срд 07:24:07  943712
>>943553
>Не правильно пишешь, формат задается один раз перед всем выражением.

блядь что
Аноним 01/03/17 Срд 08:15:22  943725
>>943675
>#define как правило лучшее решение.
Может быть и так, но у многих на препроцессор категорическая аллергия - и на то есть существенные причины.
Это следует понимать, а не быть неполноценным аутистом вроде тебя.
Аноним 01/03/17 Срд 09:34:40  943741
>>943725
У многих - это у тебя лично?
Во всех сишных проектах, с которыми мне довелось работать - везде так или иначе использовался предпроцессор.
Аноним 01/03/17 Срд 10:35:10  943755
>>943741
> >многих на препроцессор категорическая аллергия
>везде так или иначе использовался предпроцессор.
Это совершенно ортогональные утверждения.
А ведь ты и правда туповатый аутист, плохо быть тобой.
Аноним 01/03/17 Срд 11:08:58  943764
Совершенное число. Как вывести сумму всех делителей совершенного числа на экран?
void main()
{
int a, i, x1=0, cnt=0, summ=0;
printf("Vvedite luboe desyatichnoe chislo:");
scanf("%d", &a);

for (i=1; i<=a-1; i++)
{
x1=i;
if (a%x1==0)
summ+=i;
}
printf("summ=%d\n", summ);
if (a==summ) printf("Sovershennoe chislo");
else printf("Ne sovershennoe chislo");
}
Аноним 01/03/17 Срд 11:45:40  943776
>>943771
не работает. я только начал недавно вкатываться
Аноним 01/03/17 Срд 12:21:00  943793
>>943776
Для начала сделай так чтобы твой говнокод меньше походил на говно и больше на код.
А теперь нахуй иди, дебил обосранный.
Аноним 01/03/17 Срд 17:06:35  943895
>>943793
Поясни, что не так, или петух.
Мимо
Аноним 01/03/17 Срд 17:09:50  943897
>>943895
>etot translit urovnya chervya-pidora
>Поясни, что не так
Ясно.
Аноним 01/03/17 Срд 17:10:56  943899
>>943895
Для кого шапка PR написана ? Ссылку на ебучую песочницу делай, а не гавнокод вставляй.
Аноним 01/03/17 Срд 17:27:49  943904
>>943897
> транслит как признак именно говнокода
>>943899
> Ссылку на ебучую песочницу делай, а не гавнокод вставляй.
> мимо
У меня нет кода другого анона, ибо я мимо, но я же вижу, что ты человека просто так обоссал.
Аноним 01/03/17 Срд 18:04:24  943927
>>943764
А что конкретно у тебя не работает в приведенном коде?
хелп Аноним 01/03/17 Срд 19:54:09  943985
matlabtoc.png (49Кб, 1040x759)
Посоветуйте, пожалуйста, подходящее решение для моей проблемы. У меня есть простой алгоритм написанный в матлабе. Пикрил. Который там занимает 4 строчки.

Хочу сделать тоже самое, но теперь на си/си++. Читал, что в крестах есть std::vector, но не уверен, что это то, что мне нужно.

1. Мне нужно хранить 2d вектора. Их будет очень много. Миллионы штук.
2. Отсортировать их в лексикографическом порядоке.
3. Подсчитать число уникальных векторов.

Больше ничего делать с ними не нужно.

Есть ли уже готовые инструменты в стандартной библиотеке для этого?

Алсо могу рассматривать только элементы языка по стандартам C89 и C++03 максимум. Т.к. компилятор будет MSVC 2010. И изменить это нельзя.
Аноним 01/03/17 Срд 20:52:48  944015
>>943985

Вектор в плюсах - это одномерный массив. Что такое "2d вектор"? Это матрица?

>1. Мне нужно хранить 2d вектора. Их будет очень много. Миллионы штук.

std::vector<std::vector<std::vector<int>>> или что там у тебя вместо int

Это будет твоё хранилице всех матриц.

>2. Отсортировать их в лексикографическом порядоке.

std::sort, тебе нужно лишь написать функцию сравнения двух матриц.

>3. Подсчитать число уникальных векторов.

Сравниваешь каждую пару соседних векторов в отсортированном массиве с помощью уже написанной функции и удаляешь одинаковые.
Аноним 01/03/17 Срд 21:07:48  944027
>>942599
Нахуй сишнику знание fastcall-a?
Аноним 01/03/17 Срд 21:22:29  944033
euclidean2d.jpg (22Кб, 312x325)
>>944015
>Что такое "2d вектор"? Это матрица?
Вектор в евклидовом пространстве размерности 2 (плоскости). В обычном школьном смысле.

Закодировать его нужно через координаты по осям x и y.
Аноним 01/03/17 Срд 21:26:55  944037
>>944033

Тогда std::vector<std::pair<int,int>> (или что там вместо int).
Аноним 01/03/17 Срд 21:49:22  944056
>>942599
1. За функцией __cdecl стек чистит caller, в __fastcall некоторые аргументы передаются через регистры.
2. Выравнивание, наверное, на double, поэтому sizeof будет 3 * sizeof(double). Или char будет выровнен на размер указателя, а затем будет лежать double.
3. Хуй знает.
Аноним 01/03/17 Срд 22:49:12  944112
>>943927
все работает. я не понимаю как вывести помимо числа совершенное оно или нет, его делители все
Аноним 01/03/17 Срд 23:11:35  944116
>>944112
Клади по ходу вычисления делители в массив или делай повторно тот же самый цикл, добавив внутрь if printf делителя.
Аноним 02/03/17 Чтв 06:42:58  944241
>>943755
Как и случаем ранее.
Видишь ли, использовать макроопределения для заранее известных констант - это классическое и повсеместно используемое решение, и на то действительно есть существенные причины. Вне зависимости от чьей-либо (твоей прим. авт.) аллергии.
Аноним 02/03/17 Чтв 09:13:52  944265
>>944241
>препроцессор с - мерзостный высер от дегенератов для дегенератов (тебя)
>использовать макроопределения для заранее известных констант - это классическое и повсеместно используемое решение
Опять же - совершенно ортогональные и истинные утверждения.
Аноним 02/03/17 Чтв 09:53:52  944296
>>944265
Царь, ты?
Аноним 02/03/17 Чтв 10:19:38  944304
>>944241
>Видишь ли, использовать макроопределения для заранее известных констант - это классическое и повсеместно используемое решение, и на то действительно есть существенные причины.

Настолько существенные, что нельзя использовать enum?

>>943676
Аноним 02/03/17 Чтв 10:32:31  944311
>>944304
А ты сделай мне double или char * enum.
Аноним 02/03/17 Чтв 10:37:51  944315
>>944304
Алсо логически более правильно использовать enum для связанных параметров (список состояний, например), а не объявлять через него любую целочисленную константу, попавшую в исходный код.
Аноним 02/03/17 Чтв 10:46:50  944319
>>944296
Не стоит вскрывать, дурачок.
Аноним 02/03/17 Чтв 11:33:01  944344
>>944311

Ок-ладно. А как насчёт регистровых констант?
Аноним 02/03/17 Чтв 11:53:58  944359
>>944344
Ты про спецификатор register?
Аноним 02/03/17 Чтв 12:01:52  944360
>>944359
Иди нахуй.
Аноним 02/03/17 Чтв 12:26:15  944371
>>944359

Да.

>>944360

Нет, ты.
Аноним 02/03/17 Чтв 12:28:57  944375
>>944371
>Да.
Пизда.
Аноним 02/03/17 Чтв 12:48:39  944386
1.png (12Кб, 415x467)
2.png (3Кб, 310x220)
3.png (6Кб, 382x318)
>>935715 (OP)
Сап, пр, помоги нюфагу, есть файл с числами, считываю из него числа в массив и вывожу его во второй, все бы ничего, да только считывается только первая строка файла, как заставить цикл переходить и на вторую строку?
Аноним 02/03/17 Чтв 12:56:19  944387
>>944386
Ты считал k + 1 (0..k) элементов из файла, а пишешь k (0..k-1). Алсо, закрой file2.
Аноним 02/03/17 Чтв 12:59:46  944392
1.png (4Кб, 166x372)
2.png (13Кб, 411x458)
>>944387
Так, поставил k+1, все считало, только откуда взялись нули?
Аноним 02/03/17 Чтв 13:13:30  944401
>>944371
Во-первых, никто не мешает тебе написать const register int = MY_DEFINE там, где это требуется. Макроопределения вообще удобнее тем, что их можно легко расшарить, а в случае с константными переменными - это уже либо static, либо extern. К слову, объявлять регистровые переменные в global scope - это как раз не самая популярная практика, и не все компиляторы это одобряют.
Во-вторых, если тебе нужно экономить на спичках, то не повод ли это отказаться от C и посмотреть в сторону ассемблера?
Аноним 02/03/17 Чтв 13:33:42  944417
>>944392
k-1? Два лишних значения пишешь, по-моему.
Аноним 02/03/17 Чтв 13:40:02  944419
>>944392
Ну и вообще: http://pastebin.com/EzbjnsPR .
Нахер тебе нужны эти массивы.
Аноним 02/03/17 Чтв 13:45:18  944421
>>944417
Почему там два лишних? Если считалось, допустим, 6 символов, то k = 5 (0..5). Их и выводим в цикле for (i = 0; i <= k; i++).
Аноним 02/03/17 Чтв 13:58:19  944426
>>944421
Потому что k = 6 в этом случае.
Аноним 02/03/17 Чтв 14:03:27  944429
>>944426
Действительно, это я тупой.
Аноним 02/03/17 Чтв 14:11:39  944435
>>944401
>Во-вторых, если тебе нужно экономить на спичках, то не повод ли это отказаться от C и посмотреть в сторону ассемблера?

Вот это-то я, блядь, и хотел сказать. Если так сильно жалко память, что готов пожертвовать даже скоупингом имён или писать undef, нахрен писать на C?
Аноним 02/03/17 Чтв 14:49:53  944448
>>944419
Сортировка данных, из файла считывать и сортировать, для этого и массивы
Аноним 02/03/17 Чтв 14:51:54  944450
>>944435
>нахрен писать на C?
Для мультиплатформы, например.
Нет, не армопараша и подобное говно.
Аноним 02/03/17 Чтв 14:55:54  944453
14567350736870.jpg (101Кб, 600x518)
Все тотже начинающий неосилятор.
Сделал таблицу для квадратов и кубов числа но она съезжает в бок когда число становится больше. Как записать чтобы число выдавало справа налево?
http://pastebin.com/kvkkDLUs
Аноним 02/03/17 Чтв 14:59:31  944458
>>944450
>Для мультиплатформы, например.

Нипонял.
Аноним 02/03/17 Чтв 15:04:17  944461
>>944453

printf возвращает число символов, которое он вывел. Делаешь так: отдельно печатаешь числа и отдельно печатаешь пробелы. Напечатал число - проверил число символом - добилдо нужного числа символов пробелами.
Аноним 02/03/17 Чтв 15:06:36  944463
>>944453
printf("| %d | %d | %d |\n", i, ii, iii);
printf("| %5d | %5d | %5d |\n", i, i
i, iii);
Аноним 02/03/17 Чтв 15:10:08  944465
>>944458
>Нипонял.
Это нормально.
Макеты для cuda, например.
Аноним 02/03/17 Чтв 15:13:18  944468
14116339592750.jpg (59Кб, 524x514)
>>944461
>>944463
Ебать я тупой. Отдуши братишки.
Аноним 02/03/17 Чтв 15:27:32  944480
Поясните начинающему: пытаюсь запилить строки с длинной и rc. С динамической-то частью всё просто, но как прописать это в статике? Т.е в асме я бы прописал что-то типа:
hello_ref DW -1
hello_len DW 11
hell_data DB "hello world", 0
В принципе возможно сделать без спецефических для компилятора хаков?
Аноним 02/03/17 Чтв 15:40:49  944484
>>944480

Тебе нужно хранить длину вместе со строкой?

struct
{
size_t dlinnnnnnna;
char pointer string[];
}

Аноним 02/03/17 Чтв 15:41:18  944485
>>944484

pointer лишний, лол.
Аноним 02/03/17 Чтв 17:20:44  944571
>>944485
Ваще лол. проста лооооооооооооооооооооооооооооолишеееее
лаааааааааааааааааааааааааал нахуй
Аноним 02/03/17 Чтв 17:21:06  944572
>>944480
Зачем rc для ro-строк?
Аноним 02/03/17 Чтв 17:50:48  944608
Сап, ребят, где-то видел нерабочий код на C (кажется был прототип функции, без тела, и она в main вызывалась), который gcc при этом под O3 компилил и не жаловался.
Вроде в твиттeре кто-то постил прикола ради давно еще, но это не точно, помогите плз найти
Аноним 02/03/17 Чтв 17:55:06  944614
>>944484
Благодарю.
>>944572
Для унификации же.

Похоже на параною с моей стороны, но всё ж успокойте меня:
Для ro строк использую структру {int rc; int len; const char data[];}, ну что бы её
в неизменяемую секцию ложило, для rw - {int rc; int len; char data[];}.
Тут ведь гарантирутся их эквивалентность? Компилятор ничего не соптимизирует?
Аноним 02/03/17 Чтв 18:26:50  944633
>>944614
> ну что бы её
>в неизменяемую секцию ложило
Кого — структуру?
Аноним 02/03/17 Чтв 18:30:46  944634
>>944633
Да
Аноним 02/03/17 Чтв 18:32:51  944635
>>944634
Лол.

Короче, строковые литералы компилятор всегда суёт в RO-секцию и тип у них const char[<длина>], поэтому присваивать их можно только указателям на const char.

К структурам это не имеет никакого отношения.
Аноним 02/03/17 Чтв 18:37:06  944640
>>944635
>
>К структурам это не имеет никакого отношения.
Ну, кроме упомянутого в предыдущем предложении присваивания. Нормальный компилятор не даст присваивать указателю на char. Ну или по крайней мере прокукарекает warning про ISO C forbids blah-blah-blah...
Аноним 02/03/17 Чтв 18:46:36  944647
Алло нахуй, куда уехал мой с++ трендж?
Аноним 02/03/17 Чтв 19:06:29  944659
>>944647
https://2ch.hk/pr/res/916056.html
Аноним 02/03/17 Чтв 19:07:42  944661
>>944659
Ты ошибся, дружище. Мне нужна помощь по ёбаному MFC
Аноним 02/03/17 Чтв 19:09:00  944663
>>944661
>MFC
monoidal functor category? Так тебе туда.
Аноним 02/03/17 Чтв 19:13:08  944671
>>944663
>monoidal functor category?
Нет. Это дерьмо гораздо хуже, и уроков по нему минимум.
Аноним 02/03/17 Чтв 19:13:57  944672
blob (688Кб, 1366x768)
blob (454Кб, 1366x768)
Сука, больной уёбок
Аноним 02/03/17 Чтв 19:35:19  944687
>>944672
>больной уёбок
ващет так и есть
Аноним 02/03/17 Чтв 19:49:10  944695
>>944687
Это уже стало нормой?
Аноним 02/03/17 Чтв 19:55:24  944702
>>944672

Учить foundation classes по ютубу - это клиника.

Открой MSDN или книжку найди какую-нибудь.
Аноним 02/03/17 Чтв 20:10:50  944726
blob (164Кб, 1366x768)
>>944702
Книжки есть, но по MFC даже в ютубе оч мало информации
Аноним 02/03/17 Чтв 20:23:00  944748
>>944672
>Одноклассники
Аноним 02/03/17 Чтв 20:24:05  944752
>>944726

Так, СТОП. Microsoft Foundation Classes? А почему в C-треде?
Аноним 02/03/17 Чтв 20:26:39  944758
>>944726
https://msdn.microsoft.com/en-us/library/d06h2x6e.aspx
Аноним 02/03/17 Чтв 20:28:55  944762
>>944752
>А почему в C-треде?
очевидно, анон считает, что здесь собрана ит элита и он прав.
Аноним 02/03/17 Чтв 20:32:13  944769
09355631.cover.jpg (149Кб, 570x807)
>>944726
читай пикрил и уебуй с нашего уютного тхредика
Аноним 02/03/17 Чтв 20:35:48  944773
>>944608
ну ребят, неужели никто не знает?
Аноним 02/03/17 Чтв 20:39:04  944777
>>944773
А ты думаешь, тут любят коллекционировать баги гцц? Могу тебе предложить какой-нибудь int main = 0xc3; но это явно не то.
Аноним 02/03/17 Чтв 20:51:51  944792
>>944773

Это вполне мог быть вызов функции, который никогда не могу случиться, например.
Аноним 02/03/17 Чтв 20:55:28  944797
>>944748
Как бута штото плахое :^)
Аноним 02/03/17 Чтв 20:56:16  944799
>>944752
>почему в C-треде?
Потому что С++-тред проёбан, и я не могу его найти
Аноним 02/03/17 Чтв 20:57:30  944804
>>944769
Неактуально для новых студий
Аноним 02/03/17 Чтв 21:18:57  944847
>>944804
ой, иди нахуй тогда, твоя mfc уже лет как 10 протухла
Аноним 02/03/17 Чтв 22:03:57  944904
>>944777
это даже не то что бы баг, скорее undefined behavior там был, мне кажется
Аноним 02/03/17 Чтв 22:41:31  944935
>>944847
Не MFC протухла, а все руководства и книги по ней
Хотя и MFC уже пахнет говном из привокзального сортира. Но тогда на чём мне пилить? Qt?
Аноним 02/03/17 Чтв 22:55:48  944947
>>944935
> Qt
да, ну или .net если ты аутист
> все руководства и книги по ней
mfc было тухлым изначально, даже пакистанские говноеды из мелкософта это признавали, так что книги актуальны до сих пор
мимо winapi->mfc->qt господин
Аноним 02/03/17 Чтв 22:57:22  944951
>>944935
>Qt
Там уже давно C++ не пахнет. Можно все на веб стаке или qml лабать, что большинство крупных контор (близзард например) и делают
Аноним 02/03/17 Чтв 23:00:21  944953
>>944951
>Там уже давно C++ не пахнет. Можно все на веб стаке или qml лабать

А можно и на плюсах тоже, юзать куэмэль не заставляют.
Аноним 02/03/17 Чтв 23:00:54  944954
>>944951
Только Qt-говно что на C++, что на QML одинаково тормозит, в отличие от MFC, в котором хоть и абсракции, но хотя бы ничего не лагает на пустом месте.
Аноним 02/03/17 Чтв 23:02:09  944955
>>944947
>mfc было тухлым изначально
аргументировать ты конечно не сможешь
как и все кукареки в интернетах
Аноним 02/03/17 Чтв 23:03:50  944957
14853599959430.png (381Кб, 807x719)
>>944947
Так, может на WinAPI всё и делать?
Аноним 02/03/17 Чтв 23:04:15  944958
>>944954
>хоть и абсракции
хуякции, и вот ему тоже полбу >>944955
в mfc тебе придется жрать солянку из winapi и ооп
Аноним 02/03/17 Чтв 23:04:34  944959
>>944951
Дело в том, что я не крупная контора.
Аноним 02/03/17 Чтв 23:05:19  944960
>>944958
Солянка солянкой, зато всё автоматизировано
Аноним 02/03/17 Чтв 23:05:52  944962
p.s. и да говноеды, хотите жрать говно, жрите, никто вас отговаривать не будет, но здесь не кресты нехуя
Аноним 02/03/17 Чтв 23:06:18  944963
14450963303190.jpg (6Кб, 255x200)
>>944947
>>944951
>>944954
Ну и что выбирать?
Аноним 02/03/17 Чтв 23:10:29  944971
>>944963
Qt.
Аноним 02/03/17 Чтв 23:55:34  944998
>>944962
>нехуя
Уроки-то сделал?
Аноним 02/03/17 Чтв 23:59:34  945000
>>944963
dlangui
Аноним 03/03/17 Птн 01:45:28  945038
>>944998
проверяй за щекой
Аноним 03/03/17 Птн 06:02:25  945071
>>944963
C#.
Аноним 03/03/17 Птн 08:28:10  945086
>>944671
Microsoft Foundation Classes?
Аноним 03/03/17 Птн 08:32:12  945087
>>944963
Haskell
Аноним 03/03/17 Птн 09:21:59  945097
Посоны посоветуйте современной литературы по C (С11 желательно). Раньше читал K&R когда был задротом, но уже подзабыл. Хочется начать снова на чем то более свежем.
Аноним 03/03/17 Птн 13:45:00  945226
>>945097
скинул в личку, проверяй
Аноним 03/03/17 Птн 14:53:48  945257
>>945097
>читал туториалы когда был ньюфагом
Проиграл. Сдаётся мне, ты просто идиот, учитывая что в стандартах практически нихуя не меняется.
Аноним 03/03/17 Птн 17:33:48  945363
>>945086
Да. Но я уже понял, что сделал не так, и как тут с чем работать.
Аноним 03/03/17 Птн 17:34:21  945365
>>944971
В ближайшем будущем попробую
Аноним 03/03/17 Птн 17:37:31  945373
14630851357980.jpg (32Кб, 556x561)
>>945000
>>945071
>>945087
Ну а новые езыки мне зочем есле есть с++?
Аноним 03/03/17 Птн 18:11:08  945402
>>945373
>c++
>c–+
Аноним 03/03/17 Птн 20:33:39  945533
>>945097
Прата из шапки, потом стандарт.
Аноним 04/03/17 Суб 01:37:54  945730
Поясните, как на си в VS 2017 прогать?
Аноним 04/03/17 Суб 01:42:50  945732
>>945730
никак
Аноним 04/03/17 Суб 01:54:52  945737
>>945730
>>945732
почему никак? в настройках проекта же можно C выставить
Аноним 04/03/17 Суб 02:07:50  945743
>>945737
vs для пидоров, поэтому никак
Аноним 04/03/17 Суб 04:50:02  945788
>>942641
тоже поначалу искал подвох, но потом понял, что всё-таки ответ на поверхности
Аноним 04/03/17 Суб 06:10:34  945799
>>945743
О!
Уважаю братишка.
Аноним 04/03/17 Суб 09:17:02  945829
>>945730
>VS 2017
>си
Нахуя?
Аноним 04/03/17 Суб 09:35:58  945841
>>945829
Ну попердолить там настроечки
Аноним 04/03/17 Суб 09:51:14  945851
>>945730
>VS 2017
Нахуя?

Аноним 04/03/17 Суб 11:47:12  945911
>>945841
Попердоль в чем-нибудь другом
Аноним 04/03/17 Суб 12:56:31  945980
С какой стороны обрезается память realloc'ом?
Аноним 04/03/17 Суб 13:42:33  946049
>>945730

Больно.
Аноним 04/03/17 Суб 13:46:50  946057
>>945980

Realloc может не только обрезать, но и переместить.
Аноним 04/03/17 Суб 13:49:06  946064
>>946057
Я понял, но я только уменьшаю размер массива
Аноним 04/03/17 Суб 14:55:34  946180
Как работает memset? Циклом память забивает?
Где можно посмотреть реализацию? В glibc нихуя не понятно.
Аноним 04/03/17 Суб 17:39:48  946303
>>946064

Ответ тот же.

>>946180
>Где можно посмотреть реализацию?

Я бы погуглил вместо тебя, но не буду.

Знаю, что 1) Есть DMA. 2) есть специальные инструкции.
Аноним 04/03/17 Суб 17:40:59  946305
>>946303
> Ответ тот же.
Лол, она может переместить даже когда я не требую больше памяти из кучи? Как так-то? ANSI C
Аноним 04/03/17 Суб 18:11:23  946321
С++ тред куда-то укатился
Аноним 04/03/17 Суб 18:13:24  946322
>>946305
>Лол, она может переместить даже когда я не требую больше памяти из кучи?

Да.

>>946321

->>>>> >>931827 (OP)
Аноним 04/03/17 Суб 18:15:19  946324
>>946322
> Да.
Как такое возможно, немногословный ты мой друг?
Аноним 04/03/17 Суб 18:16:24  946326
>>946321
И хуй с ним
Аноним 04/03/17 Суб 18:30:28  946335
напомните, malloc по стандарту выдаёт выравнивание к double?
Аноним 04/03/17 Суб 18:36:11  946339
>>946321
C++ = meme lang.
Аноним 04/03/17 Суб 19:12:13  946354
>>946339
пчм?
Аноним 04/03/17 Суб 19:26:50  946359
>>946354
Маня абстракции, ООП. На C всегда можно написать более быстрый код.
Аноним 04/03/17 Суб 19:31:04  946365
>>946339
Я лично считаю c++ мем языком из-за его плохого дизайна.
В язык просто накидали рандомных фич для решения непонятно каких проблем.
Вместо дженериков эти шаблоны, которые "решают" две проблемы одновременно. Но они хуже джавовских/растовских дженериков и в метопрограммировании мягко говоря сосут
Аноним 04/03/17 Суб 19:47:14  946371
>>946359
Не ебу, что за абсракции. За всю жизнь написал на нём два с половиной хелловорлда и теперь дрочу FMC, как видно тут >>944661
Запилил всратый калькулятор, что попробовать ещё сделать? олсо для матриц хуету, которая будет считывать определитель?
Аноним 04/03/17 Суб 20:31:08  946389
>>945730
Создаешь C++ проект, добавляешь файлы с расширением .c, пишешь. Кукаретиков не слушай, они даже не пробовали.

>>946180
Да, memset забивает циклом память. В общем случае выбираются инструкции с операндами "пожирнее" (SSE c 128-битными, например), а адреса, не подходящие для этих инструкций (невыровненные начало и хвост буфера), заполняются с помощью инструкций с меньшим количеством операндов.

>>946335
> напомните, malloc по стандарту выдаёт выравнивание к double?
Выдает адрес с выравниванием, подходящим для любого нативного типа. Если именно double требует наибольшего выравнивания, то да.
Аноним 04/03/17 Суб 20:31:50  946391
>>946389
> с меньшим количеством операндов
С меньшим размером, конечно же.
Аноним 04/03/17 Суб 22:04:30  946450
>>946324

По стандарту. Это сделано для того, чтобы программа могла уплотнять выделенные фрагменты памяти.
Аноним 04/03/17 Суб 22:07:53  946451
>>946450
Понятно, т.е. мне всегда для realloc подрубать второй указатель и проверять
Аноним 04/03/17 Суб 22:09:42  946452
>>946451

Не надо ничего проверять, просто индексировать надо оффсетами, а не указателями. ОБЫЧНО адрес выделенной области тебе неинтенесен.
Аноним 04/03/17 Суб 22:11:07  946453
>>946452
> просто индексировать надо оффсетами, а не указателями
Я даже не знаю, что это.
Просто учусь
Аноним 04/03/17 Суб 22:17:00  946457
>>935715 (OP)
Бля как выделить гигабайт памяти? Пробовал и через new и через malloc нихуя не понимаю, не могу выделить нихуя, я вобще хз как так.
Аноним 04/03/17 Суб 22:21:06  946459
>>946452
> Не надо ничего проверять
А что ты делаешь, когда realloc() NULL возвраащает?

>>946457
А у тебя он есть? Попробуй mmap().
Аноним 04/03/17 Суб 22:21:36  946460
>>946457
Те смотрю в диспетчере 0 эффекта
Аноним 04/03/17 Суб 22:23:28  946462
>>946460
> Те смотрю в диспетчере 0 эффекта
Что ты в диспетчере смотришь? Я так понимаю, это винда, в винде десяток колонок на тему памяти. Алсо, настоящую память тебе дают по мере использования - попробуй забить свой гиг единичками (не нулями!).
Аноним 04/03/17 Суб 22:30:24  946463
втф.jpg (74Кб, 372x246)
Аноним 04/03/17 Суб 22:31:07  946464
>>946463
Один вопрос WHAT THE FUCK
Аноним 04/03/17 Суб 22:36:39  946467
>>946463
1) На стеке ты можешь выделить не больше нескольких мегабайт.
2) Целочисленные константы по умолчанию int, этот int переполняется при умножении. Добавь к любому числу в строчке с size суффикс ULL (unsigned long long).
Аноним 04/03/17 Суб 22:52:09  946472
ошипка.jpg (67Кб, 459x237)
>>946467
Аноним 04/03/17 Суб 22:56:36  946476
>>946472
> суффикс
ПЕРЕКАТ Аноним # OP  05/03/17 Вск 06:36:47  946606
>>946603 (OP)
>>946603 (OP)
>>946603 (OP)
>>946603 (OP)
>>946603 (OP)
Аноним 05/03/17 Вск 11:44:46  946688
>>946459
>А что ты делаешь, когда realloc() NULL возвраащает?

Это да.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 502 | 30 | 133
Назад Вверх Каталог Обновить

Топ тредов
Избранное