М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 1 мая 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

78 Кб, 792x1023
C Programming Language #28 # OP 14 фев, 20:58 1138954 В конец треда | Веб

Тред, посвященный прародителю всех С-подобных языков и по совместительству единственному идеальному и всесторонне годному средству программирования как на системном, так и на прикладном уровне.

Пожалуйста, пользуйтесь https://ideone.com/ или http://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Классика от Отцов: http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Годное пособие для гуманитариев: http://web.archive.org/web/20160727235220/http://c.learncodethehardway.org/book/ (автор внезапно захотел денег)
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/~ats/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. Древний, но все еще актуален.

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? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

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. Koch@n "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://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

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

- №25: https://arhivach.org/thread/303902/
- №26: https://arhivach.org/thread/315652/
- №27: https://arhivach.org/thread/325831/

Шапка: http://piratepad.net/bJ1SdmkZyu

Ответы45334524525271554412

14 фев, 21:02 2 1138955

Плюсы не нужны, когда есть JS.

Ответы39069

15 фев, 01:16 3 1139069

>>1138955
Вилки не нужны, когда есть ботинки.

Ответы39209

15 фев, 12:16 4 1139209

>>1139069
Ботинки не нужны имхо.

16 фев, 10:36 5 1140075

Чтобы всю ламповость С понять, надо пильнуть на нем какую-нибудь матан задачку, из серии поиска больших простых чисел.

16 фев, 11:31 6 1140090

Есть текстовый файл вида номер - текст. Мне надо чтобы ты вводил номер и получал в ответ текст из файла в консоль. Как проще всего это сделать? Прайм пока прочитал до 4 главы, стоит прочитать 13 главу про файловый ввод-вывод?

Ответы40094

16 фев, 11:36 7 1140094

>>1140090
Регулярками. grep 45 path/to/file

Ответы40096

16 фев, 11:37 8 1140096

>>1140094
Что за регулярки и где про это прочитать?

Ответы40102

16 фев, 11:44 9 1140102

>>1140096
Регулярные выражения — regular expression. man grep, findstr /?

Ответы40111

16 фев, 11:51 10 1140111

>>1140102
Окей, а 13 глава прайма поможет мне сделать что я хочу?

Ответы40116

16 фев, 11:57 11 1140116

>>1140111
Йес оф корс.

Ответы40172

16 фев, 13:44 12 1140172

>>1140116
Чет прочитал главу и не нашел как там найти нужное слово в файле

Ответы40195

16 фев, 14:14 13 1140195

>>1140172
Ты уде читал главу, про логические операторы? А про работу со строками?

Тебе всего то надо получить со входа данные в виде номера и по нему искать. Жля этого делаешь цикл до конца файла и через if чекаешь переменную с искомой подстрокой во всех строках

Ответы40248

16 фев, 15:25 14 1140248

>>1140195
Пока нет, но уже пользовался условными операторами. Я сам хотел сделать массив, куда пихать по 3 символа из файла и сравнивать каждые 3 символа массив с числом, который ввел пользователь. И после того как совпало, то выводить дальнейшие символы на экран. Как тебе такая идея?

Ответы40262

16 фев, 15:43 15 1140262

>>1140248
Хуевая.

Ответы40273

16 фев, 15:51 16 1140273

>>1140262
Почему?

Ответы40325

16 фев, 16:11 17 1140292

101 Кб, 1080x1920114 Кб, 1080x1920

Эм, какого хуя?

Ответы4032740483

16 фев, 16:59 18 1140325

>>1140273
Потому что тебе надо лучше читать файл в цикле по 20 строк и делать проверку, потом стирать из памяти и продолжать читать файл. Но это все хуйня.

Перегоняй файлы в csv, импортируй их в sqlite3 БД и работай как с нормальной БД, а не страдай хуйнец с парсингом.

Ответы40425

16 фев, 17:00 19 1140327

>>1140292
Там нде сканф &s в конце надо

16 фев, 19:23 20 1140425

>>1140325
> Потому что тебе надо лучше читать файл в цикле по 20 строк и делать проверку, потом стирать из памяти и продолжать читать файл. Но это все хуйня.
Это еще зачем? И как ты найдешь нужное число среди 20 строк?

> Перегоняй файлы в csv, импортируй их в sqlite3 БД и работай как с нормальной БД, а не страдай хуйнец с парсингом.
Я это делаю чисто для фана, так что мне не всралась субд, я хочу сам на С написать программу.

Так, делаю наброски. Сделал преобразование введеного числа в массив. Это получилось.

Но у меня не получается закончить while - при условии ch! = EOF цикл продолжает выдавать неизвестные символы бесконечно. Опытным путем выяснил что неизвестному символу соответствует номер 255 и с условием ch! = 255 цикл завершается.

Откуда берутся эти символы, если в текстовом файле последний символ - Z?

Вот сам код:

#include <stdio.h>

int main(void)
{

char num[5];
int ch;
int i;
char mm[3];
char temp[100];

puts("input: ");
gets(num);

for (i=0; i<3; i++)
{
mm = num;
printf("mm[%d]=%c \n",i , mm);
}

//основа
FILE * fp;
fp = fopen("wicked.txt", "r");

while(ch != 255)
{
for (i=0; i<80; i++)
{
temp= getc(fp);
ch= temp;
putchar(temp);
}
}

printf("\n""%d", ch);

scanf ("%d", &num);
return 0;
}

16 фев, 19:23 20 1140425

>>1140325
> Потому что тебе надо лучше читать файл в цикле по 20 строк и делать проверку, потом стирать из памяти и продолжать читать файл. Но это все хуйня.
Это еще зачем? И как ты найдешь нужное число среди 20 строк?

> Перегоняй файлы в csv, импортируй их в sqlite3 БД и работай как с нормальной БД, а не страдай хуйнец с парсингом.
Я это делаю чисто для фана, так что мне не всралась субд, я хочу сам на С написать программу.

Так, делаю наброски. Сделал преобразование введеного числа в массив. Это получилось.

Но у меня не получается закончить while - при условии ch! = EOF цикл продолжает выдавать неизвестные символы бесконечно. Опытным путем выяснил что неизвестному символу соответствует номер 255 и с условием ch! = 255 цикл завершается.

Откуда берутся эти символы, если в текстовом файле последний символ - Z?

Вот сам код:

#include <stdio.h>

int main(void)
{

char num[5];
int ch;
int i;
char mm[3];
char temp[100];

puts("input: ");
gets(num);

for (i=0; i<3; i++)
{
mm = num;
printf("mm[%d]=%c \n",i , mm);
}

//основа
FILE * fp;
fp = fopen("wicked.txt", "r");

while(ch != 255)
{
for (i=0; i<80; i++)
{
temp= getc(fp);
ch= temp;
putchar(temp);
}
}

printf("\n""%d", ch);

scanf ("%d", &num);
return 0;
}

Показать весь текст
Ответы40429

42 Кб, 1080x1920
16 фев, 19:28 21 1140429

>>1140425
Вот что на выходе получается. Как я понимаю, эти неизвестные символы появляются после того как у цикла for закончились символы из файла, но он все равно делает цикл 80 раз, верно?

Что с этим делать? Сделать условием цикла ch! = 90 (что соответствует заглавной Z) не получается, цикл на Z не останавливается.

Ответы4047040713

16 фев, 20:26 22 1140456

Обмазываюсь GDB, хотел бы вкатиться в системное программирование и обратную разработку. Gdb виндовой, шел в комплекте с mingw. Вопрос - какого хуя не работает attach [pid] когда я пытаюсь подключиться к половине софта? Can't attach to process и все. Восьмерка x64, я админ, всё норм.

Ответы40509

16 фев, 20:42 23 1140464

>текстовый файл вида номер - текст
>используй регулярные выражения
> Перегоняй файлы в csv, импортируй их в sqlite3 БД и работай как с нормальной БД
kek

63 Кб, 1080x1920
16 фев, 21:01 24 1140470

>>1140429
Сделал вывод значений через каждые 3 символа. В файле первач строка написана как 001 fi

Ответы404754049140713

16 фев, 21:03 25 1140475

>>1140470

Какого хуя мой пост порезался? В файле написано "001 fi

Ответы40477

146 Кб, 1080x1920
16 фев, 21:04 26 1140477

>>1140475
Сука!

Какого хуя мой пост порезался? В файле написано "001 fi

Ответы40491

16 фев, 21:14 27 1140483

>>1140292
Анончик, подскажи, куда складываются скомпилированные программы в этом c4droid? И как их потом запускать? Хелпа или фака нет

Ответы40491

16 фев, 21:34 28 1140491

>>1140470
>>1140477
>>1140483
в армии? в тюрьме?

Ответы404924049540505

16 фев, 21:36 29 1140492

>>1140491
На том свете...

16 фев, 21:42 30 1140495

>>1140491
Нет, просто угорел с идеи писать на си прямо на телефоне. Но по ходу не работает ни хера.
Вроде разобрался с компиляцией и сохранением. Надо экспорт делать. Как теперь запустить программу с параметрами?

Ответы40504

16 фев, 21:57 31 1140504

>>1140495
Хуясе, работает. Лонгтап на "Run" даёт вводить аргументы.

16 фев, 22:00 32 1140505

>>1140491
>в армии? в тюрьме?
вна украине

16 фев, 22:07 33 1140509

>>1140456
> я админ
У тебя команденая строка с elevated привилегиями (от админа) запущена, или просто по клику?

Ответы40513

16 фев, 22:13 34 1140513

>>1140509
Вот тоже про это думал, запускал от админа - ноль эффекта.

11 Кб, 1293x124
17 фев, 06:49 35 1140681

Ебанёшься с этими вашими сями.
Короче, пишу лабу в студии, в дебажном режиме. Уже всё полностью оттестил, всё работает, включаю релизный. И тут хуяк, 50 ошибок при сборке, про не несовпадение типов и про не заполненные заголовки.
Ок, исправил, запустил, всё вроде норм. Переставляю режим сборки снова в Debug, пытаюсь собрать, а оно хуяк и вон что выдаёт, типа константы несколько раз определяются. Как так получается я не очень понял, и почему то оно выдаётся только в режиме сборки Debug x86. Под 64 спокойно собирается. Вот как так то?

Ответы4068340882

17 фев, 07:17 36 1140683

>>1140681
Хуй знает как, но оно решилось. Ссылки я нигде не убирал, может просто пересборка помогла. Интелисенс с сями просто отвратно работает, всё таки

17 фев, 09:52 37 1140713

>>1140470
>>1140429
Бамп вопросу

Ответы40968

17 фев, 16:33 38 1140882

>>1140681
>студии
говноед, уходи

17 фев, 18:59 39 1140968

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

17 фев, 19:33 40 1140986

Зачем Си когда есть С++? Я не хочу затевать холивар, мне просто искренне интересно.

Ответы40990

17 фев, 19:39 41 1140990

>>1140986
Затем, что выучить Си возможно. Крестов целиком не знает даже WG21.

Ответы40995

17 фев, 19:46 42 1140995

>>1140990
Значит если смотреть объективно, то особой разницы нет?

Ответы41001

17 фев, 19:51 43 1141001

>>1140995
Ну я предпочитаю понимать, что в коде происходит. В крестах код может выглядеть просто, но иметь овердохуя подводных камней.

Ответы41002

17 фев, 19:54 44 1141002

>>1141001
А в плане востребованности? На рынке труда кого больше ищут и кому больше платят?

Ответы4100341019

17 фев, 19:56 45 1141003

>>1141002
на "рынке труда" никого уже последние года не ищут, а выбирают лучших

Ответы41004

17 фев, 20:01 46 1141004

>>1141003
А зарплата у лучших крестовиков или сишников будет лучше?
То есть лучше не вкатываться в программирование и идти в каких-нибудь экономистов?

Ответы41006

17 фев, 20:06 47 1141006

>>1141004
Не советую вкатываться в си или кресты, если не интересует эмбеддед. Возьми что-нибудь более востребованное. Посмотри вакансии - сейчас кругом веб.

Ответы41008

17 фев, 20:10 48 1141008

>>1141006
Это до очередного доткома. Нейроночки, вычисления для суперкомпьютеров и хуева тонна других областей, где этот веб на хуй не нужен. Самое главное туда попасть, но если учишь си на харкаче, то конечно лучше вкатываться в веб. Серьезные люди в универ ходят для наработки связей, чтобы на практику куда-нибудь взяли на проект. Все эти мантры про универ не нужен — бред. Универ нужен для социализации, а знания все великие программеры так-то черпали не толькл от преподов или криг, а наступая на грабли.

Ответы4100941015

17 фев, 20:13 49 1141009

>>1141008
Дотком? Was ist das?

Ответы41010

17 фев, 20:14 50 1141010

>>1141009
Вот и выросло поколение. В гугол животное.

Ответы41012

17 фев, 20:16 51 1141012

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

Ответы41018

17 фев, 20:18 52 1141015

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

Ответы41024

17 фев, 20:23 53 1141018

>>1141012
Рынок переполнен нахуй ненужными веб макаками. Спрос ниже предложения. Демпингуют все кто только может, даже лебедев.

Косвенно об этом и ютуб говорит, признавая факт, что реальные покупатели рекламы уходят, и банеры в адвордсе а-ля улетный лендинг за 10к ₽ под ключ.

Ответы41022

17 фев, 20:23 54 1141019

>>1141002
1С

17 фев, 20:25 55 1141022

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

Ответы41028

17 фев, 20:26 56 1141024

>>1141015
Это ты переоцениваешь. Есть пласт областей, где это ненужно. Теже драйверописатели или бигдата или узконаправленный софт для управления работой схд под гипервизором...

17 фев, 20:31 57 1141028

>>1141022
Так вакансии все за еду, а «писать» три вопроса на стаковерфлоу + 2 плагина из npm.

Касаемо Си вакансий такая ситуация, потому что их и на рынок не выводят, ибо общение как в секте.

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

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

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

Ответы41036

sage 17 фев, 20:38 58 1141036

>>1141028
> Так вакансии все за еду
Ценник примерно одинаковый, что для фронтэндера, что для байтоеба.

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

Ответы41038

17 фев, 20:40 59 1141038

>>1141036
Будь по твоему.

17 фев, 21:02 60 1141058

Как заставить gcc высрать ту часть препроцессирования, которую он смог сделать, даже если <govno.h> не найдено, и еррор посему в итоге.

Ответы41065

17 фев, 21:05 61 1141061

Как в C включить поддержку русского языка?

Ответы4106541077

17 фев, 21:13 62 1141065

>>1141058
cpp file.c (препроцессирование в stdout), cc -E file.c (то же, что и предыдущее), cc -save-temps file.c (искать file.i рядом с file.c)

>>1141061
> включить поддержку русского языка
Зависит от ОС. Гугли setlocale +названиеос.

Ответы41071

17 фев, 21:15 63 1141071

>>1141065
Мне нужно в андроиде подключить русский язык.

17 фев, 21:27 64 1141077

>>1141061
setlocale(LC_ALL, "Russian");

Ответы4138241607

17 фев, 22:25 65 1141128

Какими IDE кто тут пользуется?

Ответы411314113541200

17 фев, 22:29 66 1141131

>>1141128
никакими

Ответы41134

17 фев, 22:34 67 1141134

>>1141131
Лох

17 фев, 22:34 68 1141135

>>1141128
Какими, к хуям, IDE? Vi наше всё. В другом терминале запускаю скрипт сборки, в третьем в links тред открыт.

Ответы41138

17 фев, 22:38 69 1141138

>>1141135
А ещё есть Ctrl+z, bg и fg что позволяет часто ограничиться одним терминалом.

Ответы4113941144

17 фев, 22:39 70 1141139

>>1141138
>терминал
CMD KRUTO

Ответы41150

17 фев, 22:42 71 1141144

>>1141138
%

17 фев, 22:49 72 1141150

>>1141139
Что ты сказать-то пытаешься?

18 фев, 00:03 73 1141200

>>1141128
emacs

18 фев, 04:40 74 1141305

Линуксовая прога на входе получает символы вида \u0424. Как их проще всего декодировать, чтобы потом вывести в читаемом виде?

Ответы4131941329

18 фев, 06:04 75 1141319

>>1141305
Именно в таком виде? Ну так декодируй, просто же. Сматчишь \u, проверишь, что потом 4 isxdigit() подряд, и либо сам число посчитаешь, либо strtoul(str, 16). Ну а потом можешь либо printf c %ls и массив wchar_t, который у тебя получился, либо в UTF-8 закодируй и обычным %s выводи.

Ответы41397

18 фев, 07:59 76 1141329

>>1141305
1. Ну типа берёшь такой вот питоновский код https://wandbox.org/permlink/Ockamqto6hfwc3hE
s = input()
print(s.encode('utf-8').decode('unicode-escape'))

2. Потом типа ищёшь/пишешь реализацию popen2/3 на C

3. Споунишь (проверочное слово spawn) из C-проги процесс питона, отправляешь символы вида \u0424 ему в stdin, забираешь резульатт из stdout

Проще некуда.

Альтернативный вариант: встраиваешь в свою прогу интерпретатор питона через его C API.

18 фев, 12:33 77 1141382

>>1141077
Не работает нифига.

18 фев, 12:54 78 1141397

>>1141319
Спасибо, получилось.

5 Кб, 979x512
18 фев, 19:53 79 1141607

>>1141077
А в винде как сделать? Вот этот код
#include <stdio.h>
#include <locale.h>

int main(int argc, char argv[])
{
setlocale(LC_ALL, "Rus");
printf("Привет мир! \n");

int a;
scanf("%d", &a);
return 0;
}

выдает то что на скрине

Ответы416214173942194

18 фев, 20:21 80 1141621

>>1141607
А в винде все сложно. Зависит от компилятора. Основная проблема в том, что виндовая консоль не умеет в UTF-8. Варианты:
1) Сохранить исходники в кодировке Windows-1251, а не в UTF-8. Сделать setlocale(LC_CTYPE, "1251") или setlocale(LC_CTYPE, "866").
2) Использовать гораздо менее известный, зато немного более правильный способ: исходники в UTF-8, локаль Rus, но с ключиком -fexec-charset=cp866 Для этого тебе понадобится гцц или шланг (в вижуалстудио тоже можно задать Execution Charset в свойствах проекта, как в других компиляторах - не знаю).

Ответы41627

18 фев, 20:30 81 1141627

>>1141621
>Сохранить исходники в кодировке Windows-1251, а не в UTF-8.
Это как?
>Сделать setlocale(LC_CTYPE, "1251") или setlocale(LC_CTYPE, "866").
не помогает.

Ответы41629

18 фев, 20:34 82 1141629

>>1141627
> Сохранить исходники в кодировке Windows-1251, а не в UTF-8.
> Это как?
Боже. Ну покажи скриншот своего редактора. Где код пишешь?

Ответы41631

76 Кб, 1920x1080
18 фев, 20:40 83 1141631

>>1141629
В CodeLite

Ответы4163741640

18 фев, 20:48 84 1141637

>>1141631
сразу уточню, что менял в правом углу UTF-8 на Windows-1251, но результата это не дало.

Ответы41642

18 фев, 20:50 85 1141640

>>1141631
Вон там справа внизу окна у тебя UTF-8 написано. Попробуй потыкать, хуй знает. Справку по редактору найди.

Ответы41642

18 фев, 20:51 86 1141642

>>1141640
>>1141637

Ответы41644

18 фев, 20:58 87 1141644

>>1141642
Ну хуй знает, должно работать.

18 фев, 23:42 88 1141739

>>1141607
Запускай в powershell, там вроде проблем нет с ютф-8. Как бы повершелл в дрисятке по умолчанию идет вместо смд.ехе, на хуй ты это говно мамонта откопал?

Ответы4175441838

sage 19 фев, 00:03 89 1141754

>>1141739
> там вроде проблем нет с ютф-8
Там есть проблема. Оно умеет в CHCP 65001, да, но по умолчанию там вообще какая-то хуета, даже не 1251/866. Каждый раз менять кодировку заебешься, впрочем как и рассказывать пользователям, почему у них крякозябры. К тому же, шелл, который иногда открывается сразу, а иногда при старте неведомо чем занят секунд по пять, шеллом называться не имеет права.

Ответы41768

19 фев, 00:12 90 1141768

>>1141754
По 5 секунд он открывается подгружая модули. Даже на ссд в рэйде и 32 Гб ОЗУ. Но это майкрософт, у них это норма.

Касаемо кодировки боюсь соврать, но в шелле более полная поддержка ютф-8. Даже переключать не надо. Элементарно делаешь

dir /s . > report.txt

И смотришь хекс редактором на заголовок файла или в текстовом редакторе.

chcp это архаика из смд.ехе.

Ставь альтернативный шелл.

Ответы41780

19 фев, 00:13 91 1141769

Здаров, ушлепки. Зашел перднуть в ваш тред. Ненавижу С.

Ответы41772

165 Кб, 604x604
19 фев, 00:20 92 1141772

>>1141769
Красава, спасибо, что отметился, а теперь катись к хуям.

sage 19 фев, 00:45 93 1141780

>>1141768
> Но это майкрософт, у них это норма.
сmd.exe по-прежнему запускается мгновенно. У того же самого майкрософта.

> dir /s . > report.txt
И нахуй нужен "шелл", если он не может даже отображать текст?

> chcp это архаика из смд.ехе.
exe-файлы, у которых стоит /SUBSYSTEM:CONSOLE, открываются в виндовой консоли, а не в этом дерьме, которое к ОС даже прикрутить нормально не удосужились. В консоли нет UTF-8, в консоли кодировки по-прежнему переключаются через chcp (и соответствующими функциями API). Когда в качестве системной консоли прикрутят павершелл, ты будешь рассказывать об архаике. Но не раньше.

> Ставь альтернативный шелл
Ничем не отличается от GUI-приложения, которое рисует свою "консоль" самостоятельно. И настолько же нинужно. Ну то есть, для разработчика очень даже норм, если программа, которая пользуется чем-то нестандартным, дальше его машины не уйдет. ConEmu охуенный, умеет и в ANSI-последовательности, и в UTF-8, и даже в символы двойной ширины.

Ответы42283

19 фев, 04:42 94 1141838

>>1141739
А как сделать чтобы мой экзешник открывался в повершелле?

19 фев, 15:45 95 1142048

Такой вопрос - можно ли получить текущее значение даты?

Ответы4222142305

19 фев, 17:56 96 1142194

>>1141607
Поставь себе бубунту в WSL

Ответы42213

19 фев, 18:10 97 1142213

>>1142194
Не знаю о чем ты. Я хочу чтобы моя программа переставала работать после определенного периода. Это можно сделать в С?

19 фев, 18:22 98 1142221

>>1142048
Конечно нет. Как ты себе представлешь?
Это что-то из области фантастики.

Ответы422354223942243

19 фев, 18:37 99 1142235

>>1142221
По мне так, надо сделать следующую схему:
В программе ставим пока не узнается время панель загрузки и просим подождать некоторое время. Пользователь не выдержит и свернет ее. Но надо оформить дело так, чтобы она продолжала пахать в фоновом режиме (то есть просто уменьшить координаты окна до 0).
Затем надо поставить хук, который будет считывать со страниц браузера при помощи регулярки числа похожие на значения времени. Потом уже получить это значение и дело в шляпе. Задачка-то то простая.

Ответы422384223942255

19 фев, 18:39 100 1142238

>>1142235
Может надо написать драйвер, который будет запрашивать у биоса данные о времени?

19 фев, 18:40 101 1142239

>>1142221
>>1142235
Вы сейчас серьезно? Си никак не может узнать текущую дату?

Ответы4224442245

19 фев, 18:42 102 1142243

>>1142221
Нет, ты мылишь загнанно в рамки своих мыслей, освободись и найди *к р е а Думаю, что лучшее решение - написать нейросеть которая по географическим координатам и падению света\положениию солнца будет определять время дня. По крайней мере, мы так получим платформонезависимое ПО.

Ответы42251

19 фев, 18:42 103 1142244

>>1142239
Мог бы проиграть, а не дуться тут

19 фев, 18:43 104 1142245

>>1142239
Нет, все проще. Просто обратись по адресу памяти где находится данные о значении времени в ОС и считай оттуда.

Ответы4224742250

19 фев, 18:43 105 1142247

>>1142245
Ты ебу дал? Надо просто написать скрипт на JS, шарпее и интегрировать его с кодом на Си.

19 фев, 18:45 106 1142250

>>1142245
Дамп ядра с опорой на Meltdown подойдёт?
А как потом парсить?

Ответы42255

19 фев, 18:45 107 1142251

>>1142243
Что касается мобильных платформ, то одним из решений является фиксация момента вхождения в ночной режим.

19 фев, 18:47 108 1142255

>>1142250
Не будет работать на процессорах AMD! Слишком
костыльное решение, лучше какой-нибудь >>1142235

Ответы42259

19 фев, 18:48 109 1142259

>>1142255
А твой хук будет работать на любом браузере?

Ответы42261

19 фев, 18:49 110 1142260

Пиздец петросяны повылезали.

19 фев, 18:49 111 1142261

>>1142259
Будет написан хук под все браузеры. Хук лишний написать можно, а твой способ как не старайся не сделай универсальным.

Ответы42262

19 фев, 18:50 112 1142262

>>1142261
Но ведь есть ещё Spectre.

Ответы4226342265

19 фев, 18:51 113 1142263

>>1142262
А строковый молот?

19 фев, 18:52 114 1142265

>>1142262
Я слышал, что библиотечная функция основана как раз на ней.

sage 19 фев, 19:07 115 1142283

>>1141780
На conemu я и намекал.

По всем остальным пунктам — пошел ты на хуй мудак ебаный, нашелся тут умник хуев. Смд.ехе архаика признано даже в майкрософте. По умолчанию в дрисятке запускается именно повершелл. Как там криворукие макаки пишут, что у них смд вылазиет я хуй его знает, читать мсдн лучше надо. Майки обновляют свои гайды по написанию приложений. Хули ты петух вонючий тут раздухарился я в душе не ебу. Сажи тебе педроте недоношенной.

Ответы42311

19 фев, 19:22 116 1142303

Как вам CLION?

19 фев, 19:22 117 1142305

>>1142048
time.h: time, localtime, strftime - вот это все.

sage 19 фев, 19:25 118 1142311

>>1142283
Ты сейчас качаешь последнюю вижуалстудио и пишешь нам консольное приложение, которое при даблклике запускается в "консоли" повершелла и выводит русский текст, закодированный в UTF-8. Можешь читать MSDN лучше, можешь даже прошение швятому балмеру написать. Не получится - уебывай со своим повершеллом, откуда пришел.

20 фев, 12:45 119 1142694

есть ли какой нибудь задачник по си ?а то
в у прата слишком много воды
ни где ни могу найти справочник по си на русском может есть где?

Ответы42715428114310643164

20 фев, 13:33 120 1142715

>>1142694
Codeforce.com

20 фев, 15:04 121 1142763

https://ideone.com/NFcfka
что не так коомпилятор жалуется на \на цикл getchar хотя правильно на писал
вызов я напишу
учю си в codeBlocks

Ответы427654276842787

20 фев, 15:16 122 1142765

>>1142763
>учу си в codeBlocks
не твоё это, забей

20 фев, 15:19 123 1142768

>>1142763
Даже я, прочитавший недавно 4 главы праты вижу с ходу косяк. Хули ты в символьную константу пытаешься запихнуть строку?

Ответы42770

20 фев, 15:26 124 1142770

>>1142768
что ты меня путаешь она и будет принимать по 1 символу пока не встретит конец

Ответы42772

20 фев, 15:31 125 1142772

>>1142770
Йобу дал? Схуяли у тебя S1 и S2 будут принимать более 1 символа?

Ответы42776

20 фев, 15:35 126 1142776

>>1142772
стого
что%с это символ
а %s строка
ты еыбу дал
я уже делал упражнения
с этим кодом все принимает

Ответы4277842793

20 фев, 15:36 127 1142778

>>1142776
Ебать, ты путаешь тип переменной и вид данных, которые выводишь.

20 фев, 15:59 128 1142787

>>1142763

> что не так коомпилятор жалуется на \на цикл getchar хотя правильно на писал

>prog.c:12:1: error: function definition is not allowed here
>{
>^
>1 error generated.

Ответы4278842789

20 фев, 15:59 129 1142788

>>1142787
>вызов я напишу

20 фев, 16:00 130 1142789

>>1142787
Да у него там пиздец ошибок, скобок хуй пойми где и как понаоткрывал.

20 фев, 16:19 131 1142793

>>1142776

Ты объявил две переменные размером в один символ. Пытаешься взяв указатель на переменную размером в один байт писать туда строку. Не надо так.

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

Во-вторых, если используешь указатели, то тебе нужно выделить память функцией malloc

В-третьих, если ты хочешь читать строки хуйпойми какой длины, то scanf тебе не подойдет и тебе нужно писать велосипед вроде такого:

https://stackoverflow.com/a/16871702

Ответы42797

20 фев, 16:24 132 1142797

>>1142793
> если ты хочешь читать строки хуйпойми какой длины, то scanf тебе не подойдет
А хули нет? Делаешь массив как long Long и все.

20 фев, 16:40 133 1142811

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

Ответы43101

20 фев, 20:29 134 1143029

Аноны, я пишу код в sublime, а потом компилирую через gcc. Это по понятиям?

Ответы4303243047

20 фев, 20:30 135 1143030

А если у меня есть переменная типа short:
short value = 1;
Если я прибавлю единицу, то есть:
value = value + 1;
То она приведется в тип int?

Ответы43047

20 фев, 20:34 136 1143032

>>1143029
Да, я вообще tcc компилирую

Ответы4303743101

20 фев, 20:36 137 1143034

Как в gcc изменить название компилируемого файла на винде?

Ответы43047

20 фев, 20:42 138 1143037

>>1143032
Больной ублюдок

20 фев, 20:56 139 1143047

>>1143030
У тебя переменная типа short, или макаба съела указатели? Нет, она останется short, но вычисления будут идти так: value = (short) ((int)1 + (int)value) (естественно, в реальности компилятор может и в 16 битах посчитать, если будет уверен, что поведение будет полностью аналогично).

>>1143029
Вполне по понятиям, можешь билд-систему в саблайме настроить на gcc или на мейк-файлы - получишь подсветку ошибок.

>>1143034
> в gcc изменить название компилируемого файла
-o filename.exe

Ответы43074

20 фев, 21:44 140 1143074

>>1143047
>подсветку ошибок
О, тогда студия вообще не нужна будет.

20 фев, 22:21 141 1143098

Посоны, как лучше всего запомнить синтаксис? Где найти задачки и попрактиковатьс?

Да, он сейчас используется?

Ответы43103

20 фев, 22:26 142 1143101

>>1143032
> Посоны, как лучше всего запомнить синтаксис?
Пиши код. Часто пиши код. И не пренебрегай чтением чужого.

> Где найти задачки и попрактиковатьс?
Несколькими постами выше >>1142811, алсо форчонговские пики рулеточками для кодеров (может быть, кто-нибудь скинет?).

> Да, он сейчас используется?
Нет. Сейчас все принято писать на JS. Даже твоя ОС написана на JS, даже интерпретатор JS написан на JS.

Ответы43103

sage 20 фев, 22:27 143 1143103

>>1143101
>>1143098
Промахнулся.

Ответы43116

20 фев, 22:29 144 1143106

>>1142694
мы тебе скажем, а ты еще их сделаешь, устроишся на работу и будешь создавать конкуренцию
давай как нибудь сам поищи в интернетах

Ответы4325643645

20 фев, 22:42 145 1143116

>>1143103
Спасибо

20 фев, 22:44 146 1143117

Не могу запомнить массивы и циклы while и do while. Есть инфа подробнее?

Ответы4313443164

20 фев, 23:19 147 1143134

>>1143117

Страшно представить что будет на указателях.

Ответы43164

20 фев, 23:52 148 1143164

>>1143117
Практика, только практика спасёт отца русской демократии. Находишь те же самые примеры и вручную их вводишь. Не тупо копипастинг, а именно ручками и головой.
>>1143134
Проблема только в методике обучения. все думают, что достаточно прочитать какой-нибудь талмуд и уже станут ебашит код с закрытыми глазами, а вот на практику в процессе изучения забивают.
Вот типичный представитель >>1142694 смотрю в внигу, фижу фигу.

21 фев, 07:26 149 1143256

>>1143106
А я бы хотел, чтобы люди писали новые полезные библиотеки и прочие проги, ибо у малого количества людей на все ресурсов не хватит.

21 фев, 09:31 150 1143276

Кто нибудь мне может объяснить как это
> https://icculus.org/physfs
Гавно работает, какой то поехавший запихал в файл данные, я их никак не могу достать, ничего не помогает, binwalk и ещё кучу мокрописек опробовал

21 фев, 18:03 151 1143606

Приведение типов у malloc нужно для того, чтобы самому настраивать арифметику указателей, или что?

Ответы43740

21 фев, 18:44 152 1143645

>>1143106
>устроишься на работу
>работу
>Cи
Проиграл.

Ответы43657

21 фев, 18:52 153 1143657

>>1143645
Антоны, все действительно так плохо?

Ответы43664

21 фев, 18:59 154 1143664

>>1143657
нет

Ответы43679

21 фев, 19:08 155 1143679

>>1143664
пидора ответ

Ответы43684

21 фев, 19:12 156 1143684

>>1143679
Пидор пидорка видит из далека.

Ответы43686

21 фев, 19:15 157 1143686

>>1143684
Пидор пидорка, видящего пидорка издалека

Ответы43687

180 Кб, 600x600
21 фев, 19:18 158 1143687

>>1143686
А ну блядь, гомодрилл вонючий, не проецируй.

я вообще мимо, решил дровишек подкинуть, а ты в свои уже записал

Ответы43752

21 фев, 20:17 159 1143728

Признавайтесь, указатель это структура такая, пусть и неявная?
Ведь когда мы приводим его к type, мы по сути влияем на его смещение при переходе от type[n] к type[n+1], вот только где нужные для этого перехода данные хранятся?

Ответы43733

21 фев, 20:20 160 1143733

>>1143728
В большинстве случаев это целое число.
Иногда может быть и структура, гугли fat pointers

Ответы43741

21 фев, 20:25 161 1143740

>>1143606
У этой функции возвращаемый тип — "void звёздочка", т.е. указатель-на-что-угодно. Его и приводят к тому типу, какой нужен в программе.

Ответы43753

21 фев, 20:25 162 1143741

>>1143733
Целое число это адрес в памяти.
А как его смещать, если я хочу двигаться по индексам элементов? Разве не нужно ещё число?

Ответы4374543787

89 Кб, 811x583
21 фев, 20:26 163 1143744

В чем прикол этой картинки? Ведь код верный же , не?

Ответы437474374943881

21 фев, 20:27 164 1143745

>>1143741
На процессорах до 286 было нужно. Теперь не нужно.

Ответы43747

21 фев, 20:29 165 1143747

>>1143744
Хыхы.
В if не сверяется, а приравнивается к true, а потом возвращается значение, присвоенное этой var.
Т.е. при if у тебя это становится true.
Проиграл, в общем-то.
>>1143745
Magic.

Ответы43750

21 фев, 20:30 166 1143749

>>1143744
Код-то верный на все сто, но вот...

21 фев, 20:30 167 1143750

>>1143747
Да пока разглядывал, уже сам заметил это, но все равно спасибо.

21 фев, 20:33 168 1143752

>>1143687
Зачем обижаешь так?

21 фев, 20:33 169 1143753

>>1143740
А по идее можно и не менять тип?

Ответы43788

21 фев, 20:45 170 1143762

Для сишки желателен линукс?

Ответы4376443790

21 фев, 20:46 171 1143764

>>1143762
Строго обязателен.

Ответы43766

21 фев, 20:48 172 1143766

>>1143764
Что делать если нет возможности?

Ответы43767

21 фев, 20:49 173 1143767

>>1143766
Для начала сочинить ситуацию, когда её реально нет.

Ответы4377243774

21 фев, 21:00 174 1143772

>>1143767
Батя отпиздит за даулбут на ноуте.

Ответы43885

35 Кб, 652x526
21 фев, 21:04 175 1143774

>>1143767
Что не нравится ему? Норм код же.

Ответы43776

404 Кб, 1920x1053
21 фев, 21:05 176 1143776

>>1143774
Забыл приклеить...

Ответы43782

21 фев, 21:12 177 1143782

>>1143776
Попробуй это.
cpp -v /dev/null -o /dev/null
Должен получить директории, в которых компилятор ищет хедеры.
В одной из этих директорий должен быть stdio.h

Ответы4378643790

21 фев, 21:15 178 1143786

>>1143782
>cpp -v /dev/null -o /dev/null
И потом надо будет настроить поиск хедеров ему?

Ответы43792

21 фев, 21:16 179 1143787

>>1143741
>А как его смещать, если я хочу двигаться по индексам элементов? Разве не нужно ещё число?

Компилятор такой смотрит-смотрит на тип указателя и хуяк - видит какой тип и такой хуяк тут же ассемблер и смещение такой запиливает на нужное количество байт.

https://godbolt.org/g/nCwpoS

Ответы43792

21 фев, 21:16 180 1143788

>>1143753
Ты не сможешь его разыменовать

21 фев, 21:18 181 1143789

Собираюсь вкатываться в программирование. Для себя. Дедлайнов нет, поэтому времени на изучение будет сколько угодно. Что лучше выучить: C или C++? Опытные аноны, есть ли существенная разница?

Ответы43822

21 фев, 21:19 182 1143790

>>1143762
Нет, особой разницы нет. В macOS будет человеческий интерфейс вокруг, а в Windows человеческие отладчики.

>>1143782
Зачем девнулл, если можно таким же образом cc -v запустить на файле, который компилируется, и посмотреть, где оно ищет и как? Подозреваю, что анон вообще не поставил glibc, но не представляю, как он смог этого добиться.

Ответы4379343863

21 фев, 21:21 183 1143792

>>1143786
Вообще, по дефолту в FHS для C-хедеров числится /usr/include
Это если проблема в этом, вообще.
А так, да, если их каким-то чудом нет, то придётся как-то настроить.
>>1143787
Это смещение часть области кода чтоли?
Или просто рядом со статиками валяется в программе под каким-то безымянными переменными?

Ответы43800

21 фев, 21:22 184 1143793

>>1143790
И ещё двадцатью способами, но я спастил с доков gcc.

21 фев, 21:27 185 1143800

>>1143792
> Это смещение часть области кода чтоли?
Это смещение вычисляется в рантайме (индекс умножается на размер типа). Соответственно, "хранится" оно в инструкции (или нескольких).

Ответы43801

21 фев, 21:31 186 1143801

>>1143800
Я не про то "смещение", о котором ты говоришь:
> индекс умножается на размер типа
Это я вообще бредятину какую-то получу.
Смещение элемента относительно начала массива? Но это свойство элемента массива.
Я про непонятное свойство указателя как такового. Есть где-то инфа, что если ptr++, то на столько единица int'a увеличивается, причём ((char ) ptr)++, это не ((long ) ptr)++, потому что где-то есть неявный параметр, которую эту дельту задаёт при инкременте.

Алсо,
> рантайм
> размер типа
Это тоже не понял. sizeof(type) не рантайм, ЕМНИП.

Ответы4380343807

21 фев, 21:32 187 1143803

>>1143801
> на столько единица
> на столько единиц

21 фев, 21:45 188 1143807

>>1143801

>Я про непонятное свойство указателя как такового. Есть где-то инфа, что если ptr++, то на столько единица int'a увеличивается, причём ((char ) ptr)++, это не ((long ) ptr)++, потому что где-то есть неявный параметр, которую эту дельту задаёт при инкременте.

Да, называется размер типа на который ссылается указатель. и адресная арифметика учитывает это.

поэтому указатель на чар при добавлении 1 увеличивается на 1 байт, указатель на шорт - 2, на инт - 4, на лонг - 8, на структуру, которая содержит внутри int x,y,z,w - 16.

Ответы43808

21 фев, 21:46 189 1143808

>>1143807
> учитывает это
Я же говорю, чудеса какие-то.
Это типа не лезь оно тебя сожрёт?

Ответы4381343821

21 фев, 21:54 190 1143813

>>1143808
Если в арифметическом выражении встречается указатель, включается арифметика указателей, в которой единица равна размеру типа. Поэтому при прибавлении или вычитании чего-то к указателю предварительно считается офсет, равный n * sizeof(type). Если n переменная, оно считается в рантайме, а sizeof(type) кодируется виде константы в инструкции. Если n константа или константное выражение, то перемножение делается на этапе компиляции и втыкается (в инструкцию опять же) уже готовый офсет.

Ответы43817

21 фев, 21:55 191 1143817

>>1143813
Вот сейчас уже полностью понятно стало.

21 фев, 21:58 192 1143821

>>1143808
>Я же говорю, чудеса какие-то.

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

И по этой же причине компилятор бьет тебя по рукам если ты присваиваешь указатель одного типа к другому без явного приведения типа.

Ответы43831

21 фев, 22:00 193 1143822

>>1143789
Новичку лучше с Си

Ответы43950

21 фев, 22:04 194 1143830

Есть ли замена монструозной студии для си?

Ответы4383243834

21 фев, 22:05 195 1143831

>>1143821
Если сделаю приведение к типу char для норм побитовошо смещения, то все ПИЗДАТО?

Ответы43840

21 фев, 22:06 196 1143832

>>1143830
gcc/clang и notepad++
Лучше ещё не придумали.

Ответы43839

21 фев, 22:07 197 1143834

>>1143830
Любой блокнот с подсветкой синтаксиса, который тебе нравится. Пока ты новичок, и тебе малоинтересны всякие профайлинги и рефакторинги, никакие IDE тебе нинужны. А когда понадобится - сам подберешь нужное.

21 фев, 22:10 198 1143839

>>1143832
А что не сублайм?

Ответы4384343844

21 фев, 22:10 199 1143840

>>1143831
Побайтового. Да, можно считать в байтах таким образом. Но не на всех платформах можно по получившемуся таким образом указателю прочитать int, например, потому что может требоваться выравнивание (т.е., адрес инта, например, должен быть кратен sizeof(int)).

Ответы43855

21 фев, 22:11 200 1143843

>>1143839
Первый раз слышу

Ответы4384443846

21 фев, 22:11 201 1143844

>>1143843
Толсто.

>>1143839
Саблайм очень неплох, пользуюсь, зависимость есть.

21 фев, 22:12 202 1143846

>>1143843
Sublime text. Под пиво норм заходит.

Ответы43847

21 фев, 22:14 203 1143847

>>1143846
Зашёл на сайт их, мне написали, что для Питуна.

Ответы43850

21 фев, 22:14 204 1143848

Если я буду размещать переменные в памяти без промежутков, то что мне будет?

Ответы43849

21 фев, 22:15 205 1143849

>>1143848
Вечные массивы, и сегфолты по праздникам.

21 фев, 22:16 206 1143850

>>1143847
Хоть для чего. Подсветка для си есть по дефолта, а подсветка ошибок добавляется парой кликов установкой плагина.

21 фев, 22:18 207 1143855

>>1143840
Допустим я таким образом смещаюсь по памяти. Переменная целочисленная занимает несколько байтов же? А при разыменовывании будет возвращаться один байт. Или я не вгоняю?

Ответы43856

21 фев, 22:21 208 1143856

>>1143855
> Переменная целочисленная занимает несколько байтов же?
Несколько и будут читаться.

Если выравнивание не требуется, то при итерации по 00 01 02 03 04 05 06 07 с инкрементом в один байт будут возвращаться 0x03020100, 0x04030201, 0x05040302 итд. Почему в обратном порядке? Гугли endianess (little endian).

Ответы43861

21 фев, 22:26 209 1143860

>>114385
>несколько и будут
Прости за тупой вопрос, но как так выходит?

Ответы4386143862

21 фев, 22:27 210 1143861

>>1143856
>>1143860
Обосрался

21 фев, 22:29 211 1143862

>>1143860
Прости за тупой вопрос, но как может выйти по-другому? Ты процессору дал инструкцию - читать 32-битную переменную (допустим) по такому-то адресу. Ну он и читает. Память - набор ячеек, о хранящихся внутри данных она ничего не знает, как и процессор не знает, зачем ты читаешь свои байты - интерпретирует данные программа.

Ответы43866

21 фев, 22:29 212 1143863

>>1143790
> Подозреваю, что анон вообще не поставил glibc
Без glibc система не запустится, лол. Это как не поставить ядро.

Ответы4386443869

21 фев, 22:30 213 1143864

>>1143863
Я не имел в виду сошки. В дистрибутивах бывает libname и libname-dev. В первом шаред-либа, во втором хедеры и статическая либа (если есть).

21 фев, 22:33 214 1143866

>>1143862
Спасибо большое, умный человек.

21 фев, 22:36 215 1143869

>>1143863
Есть дистр на асме целиком, так-то

Ответы43871

21 фев, 22:38 216 1143871

>>1143869
Дистр чего?

Ответы43878

21 фев, 22:42 217 1143877

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

21 фев, 22:42 218 1143878

>>1143871
Ядро линукса*

Ответы43882

21 фев, 22:44 219 1143881

>>1143744
=
==
Опа! И ты уже труп!

21 фев, 22:44 220 1143882

>>1143878
Сам его на асме переписывал?

Ответы43883

21 фев, 22:44 221 1143883

>>1143882
Мой батя переписывал....

21 фев, 22:45 222 1143885

>>1143772
Виртуалочка

Ответы43888

21 фев, 22:47 223 1143888

>>1143885
На флешке держу. Так удобнее

Ответы43892

21 фев, 22:58 224 1143892

>>1143888
Что удобнее? Дрочить ребут туда-сюда?

Ответы4389644191

21 фев, 23:01 225 1143896

>>1143892
Нет ощущения что шинда следит за тобой.

21 фев, 23:05 226 1143901

http://www.learn-c.org/

Как вам такой ресурс? Вроде доходчиво объясняют. Не знаю какой стандарт, но думается, что нечто древнее, ибо встречал на просторах how to c in 2017, и там типы данных уже идут 64 разрядах уникода (фейлю скорее всего с названием ибо нуб) uint_64 как то так объявляют тип переменной вобщем.

Ответы43943

21 фев, 23:48 227 1143943

>>1143901
Судя по количеству уроков - слишком сжато объясняют. Но если нравится, то почему бы и нет?

22 фев, 00:03 228 1143950

>>1143822
Спасибо за ответ.

22 фев, 00:07 229 1143957

Бумпе

22 фев, 12:06 230 1144130

Как работать с физической памятью?

Ответы441704421444266

22 фев, 13:02 231 1144170

>>1144130
Через MMU на ассемблере.

Ответы44190

22 фев, 13:35 232 1144190

>>1144170
Можно ли так убить брата?

22 фев, 13:36 233 1144191

>>1143892
Быстрее пашет.

22 фев, 14:16 234 1144210

Ребят, как на qt скачать html код с какой нибудь страницы. Использовал qnetworkaccessmanager, но он слизывает просто страницу, а не хтмл ее.

Ответы44261

22 фев, 14:22 235 1144214

>>1144130

Ну если тебе достаточно 1 мегабайта, то загружайся в дос, открывай любую борландовскую парашу и хуячь. Если недостаточно - то сорян, 2^32 и 2^64 байт памяти доступны онли в защищенном режиме с виртуальной памятью. Даже ядро OS и драйвера страдают и в нем работают, просто у них физическая память отмаплена другая, вместе с отображаемыми в память устройствами и привелегий больше. И так на большинстве процессоров годом выпуска позднее 1985 года. Ну или микроконтроллер бери, там виртуальной памяти нет.

Единственное что можно сделать - отмапить в таблице страниц адреса физическая -> виртуальная чтобы были 1 к 1.

22 фев, 15:53 236 1144254

Допустим у меня объявлена структура, которая содержит типы int, float и указатель на тип char. Выделяю память для экземпляра такой структуры, затем через strndup() выделяю память для строки, присваивая указателю на char в структуре.
Вопрос: если я сделаю free() для структуры, то память которая была выделена через strndup() тоже освободится?

Ответы4426344417

22 фев, 16:11 237 1144261

>>1144210
статику или динамику?

Ответы44351

22 фев, 16:15 238 1144263

>>1144254
да

22 фев, 16:19 239 1144266

>>1144130
в современных ос общего назначения - пишешь драйвер ядра

22 фев, 16:52 240 1144295

Изучаю Си по этому ресурсу: https://metanit.com/cpp/c/

Ответы44314

22 фев, 17:09 241 1144314

>>1144295
зачем?

Ответы44323

22 фев, 17:15 242 1144323

>>1144314
Хз, там меньше воды чем в книгах обычных.

Ответы44331

22 фев, 17:23 243 1144331

>>1144323
зачем си изучаешь?

Ответы44346

22 фев, 17:44 244 1144346

>>1144331
Раньше учил плюсы, но внезапно понял, что я использую и люблю в них лишь подмножество Си.

Ответы44356

22 фев, 17:50 245 1144350

»1144261
Объяснишь в чем разница? Нужен именно html код страницы, с тегами и тд, чтобы парсить

Ответы44357

22 фев, 17:51 246 1144351

>>1144261
Объяснишь в чем разница? Нужен именно html код страницы, с тегами и тд, чтобы парсить

Ответы44359

22 фев, 17:56 247 1144356

>>1144346
я спросил: с какой целью изучаешь си?

Ответы44363

22 фев, 17:56 248 1144357

>>1144350
>»
волшебник! как ты это сделал?

22 фев, 17:57 249 1144359

>>1144351
>Объяснишь в чем разница?
неа :) не помогаю вкатывальщикам :P
как нибудь сам выкарабкивайся

22 фев, 18:03 250 1144363

>>1144356
Хуй знает, просто делать нехуй.

Ответы44365

22 фев, 18:08 251 1144365

>>1144363
дон хуан всегда подсмеивался над кастаньедой от того что тот знал кучу ненужной для выжывания информации

Ответы4436644367

22 фев, 18:09 252 1144366

>>1144365
>ь
бля

Ответы44368

22 фев, 18:10 253 1144367

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

Ответы44394

22 фев, 18:11 254 1144368

>>1144366
Кастаньеты! Эспаньола!

22 фев, 19:14 255 1144394

>>1144367
Да, все так и будет.

Ответы4439744398

22 фев, 19:27 256 1144397

>>1144394
А на плюсах?

Ответы44401

22 фев, 19:29 257 1144398

>>1144394
Аноны, он меня обижает!

22 фев, 19:33 258 1144401

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

Ответы4440444446

22 фев, 19:36 259 1144404

>>1144401
Почему? Разве байтоебы не нужны? Гейдев не нужен?

Ответы444064441844446

22 фев, 19:41 260 1144406

>>1144404
>Разве байтоебы не нужны?
Особо не нужны. В регионах и мухосранях вакансия байтоеба - большая редкость, причем все ищут сениора, а джуны байтоебы уж точно никому не нужны.
>Гейдев не нужен?
Гейдев в России и СНГ - написание игр под андроид типа три в ряд с рекламой и донатом. Если хочешь в гейдев - учи unity и c#.

22 фев, 20:08 261 1144417

>>1144254
Нет. free() структуры освободит только память, выделенную для структуры. А раз внутри strndup отдельный маллок, то на этот маллок тебе тоже нужен free().

Ответы44419

22 фев, 20:09 262 1144418

>>1144404
бля, зайди на hh, в поиске резюме набери "программист c++" и охуей от контингента
просто сделай это
ты тоже хочешь таким же стать к тридцати?

22 фев, 20:10 263 1144419

>>1144417
зачем ты отвечает заведомому вкатывальщику?

Ответы4442044440

22 фев, 20:12 264 1144420

>>1144419
Затем, что мне не сложно. Алсо, если молчать или траллить нубов, тред умрет.

Ответы44466

22 фев, 20:33 265 1144440

>>1144419
Приведи пример достойного вопроса от "невкатывальщика".

Ответы44444

22 фев, 20:40 266 1144444

>>1144440
volatile struct vs. офсеты и REG_READ/REG_WRITE для регистров микроконтроллера. Алсо, битфилды vs. дефайны и сдвиги для них же. Вроде бы и особых знаний для понимания проблемы не требуется, но и золотой середины нет, у всех решений свои недостатки.
1144417

Ответы44447

22 фев, 20:41 267 1144446

>>1144401
>>1144404
В цпп треде на днях читал пост чела со стажем в с++, он в веб укатил из-за отсутствия перспектив

Ответы44450

22 фев, 20:42 268 1144447

>>1144444
Пентипл?

22 фев, 20:45 269 1144450

>>1144446
Это я.

22 фев, 21:15 270 1144466

>>1144420
>тред умрет
то что мертво, умереть не может

Ответы44468

22 фев, 21:18 271 1144468

>>1144466
Чмо мелкобуквенное, ебало свое завали и сиди молча.

Ответы44491

56 Кб, 1024x768
22 фев, 22:05 272 1144491

>>1144468

23 фев, 10:29 273 1144674

Подскажите, а есть какая-то книга рецептов и приемов для создания больших проектов на си?

Ответы449194495644961

23 фев, 18:13 274 1144878

Сап, аноны. Хочу немного оптимизировать компиляцию с objcopy, но objcopy -O ihex *.elf file.hex не срабатывает, и мне приходится ручками вводить objcopy -O ihex file.elf file.hex

Пробовал прописать objcopy --wildcard -O ihex file.elf file.hex, но это тоже не сработало.
Может кто-то объяснить мне как в objcopy правильно использовать wildcard?

Ответы44916

23 фев, 18:22 275 1144882

Кто-нибудь понимает в asm extended? Как мне вытащить значения из стека в массив?
https://pastebin.com/LA6HBKYH

Ответы4494945003

23 фев, 19:10 276 1144916

>>1144878
Лол. Ты бы подтянул матчасть по командной строке сначала. wildcard-ы раскрываются shell-ом, если есть такие файлы.
Опция --wildcard у objcopy — это про использование wildcard-ов для имён символов в файле.

Ответы44986

175 Кб, 500x357
23 фев, 19:11 277 1144919

>>1144674
>приемов для создания больших проектов на си?
Вот главный приём.

Ответы45003

23 фев, 20:22 278 1144949

>>1144882
Из какого стека?
Того, в котором выполняется твоя функция?
Тогда тупо объяви в ней локальный не статический массив, и выйди за его границы при чтении.

мимо-школьник-кун

23 фев, 20:42 279 1144956

>>1144674
> больших проектов на си?
нужно побольше обмазываться макросами чтобы делать костыли для atd и кодогенерации
и еще как можно больше структурок и указателей на функции чтобы делать костыли эмулирующие ооп - интерфейсы, полиморфизм
и прочие сладкие вещи

Ответы44959

23 фев, 20:47 280 1144959

>>1144956
Я бы еще добавил больше генераторов кода, особенно там, где надо синхронизировать бойлерплейты между собой.

23 фев, 20:47 281 1144961

>>1144674
Ебля в жопу в попытке сымитировать ООП и прочие инструменты для разработки больших проектов.

Ответы45003

23 фев, 22:01 282 1144986

>>1144916
Ну и как мне тогда конвертировать любой файл с расширением .elf в .hex?

Ответы4499545023

sage 23 фев, 22:33 283 1144995

>>1144986
Мэйкфайл напиши и правило для .elf.hex.

23 фев, 22:56 284 1145003

>>1144961
>в попытке сымитировать ООП
Не пробовал устроится стоматологом-проктологом?
Что бы сымитировать на сишечке(именно сымитировать, а не реализовать) ООП надо быть тем ещё проктологом.
>>1144919
Это не приём, а уже объект.
>>1144882
>Как мне вытащить значения из стека в массив?
Чьего стека? Где конкретика?

Ответы4501445068

23 фев, 23:53 285 1145014

>>1145003
>сымитировать на сишечке(именно сымитировать, а не реализовать) ООП надо быть тем ещё проктологом
да наверное в каждом крупном проекте ваяют полиморфизм на структурках и указателях на функции, теми же способами делают интерфейсы, теми же способами делают наследование интерфейсов
ну ты че

24 фев, 00:19 286 1145023

>>1144986
for f in *.elf ; do objcopy -O ihex "$f" "${f%.elf}.hex" ; done

Ответы4502946518

24 фев, 00:36 287 1145029

>>1145023
Спасибо

24 фев, 02:55 288 1145068

>>1145003
А из моего банального примера это не понятно какого стека? Программного стека указатель на вершину которого лежит в регистре процессора.

Ответы45093

24 фев, 05:46 289 1145093

>>1145068
Животное, ты слышало, что у процессора может быть больше одного стека и больше одного регистра, с указателем стека?

Ответы45097

24 фев, 06:13 290 1145097

>>1145093
Забей школьник, это не для тебя, ты слишком тупой и несёшь хуйню, тем более что вопрос уже решён.

24 фев, 08:18 291 1145111

Оракловский компилятор нормальная тема?
У меня стоит студия 15( но там по-моему нельзя в Си, перешёл бы на 17, но у меня не ставится из-за какого-то говна)
есть ещё нетбинс

Ответы45387

24 фев, 10:53 292 1145143

#define TEST(x) \
#ifdef ERROR \
(x) \
#endif

Пример выше не компиляется. Как сделать так, чтобы компилялось? Я хочу проверку в макрос запихнуть.

Ответы4517245387

24 фев, 12:35 293 1145172

>>1145143
Хочешь, чтобы макрос раскрывался в макрос? А второй макрос кто будет раскрывать? Пушкин?

Ответы45193

24 фев, 13:53 294 1145193

>>1145172
Чет гугол ничего не говорит, про такую оптимизацию в компиляторе. gcc -oPushkin — гуглу неизвестно :-/

24 фев, 16:10 295 1145255

кр

24 фев, 18:14 296 1145334

>>1138954 (OP)
Есть ли хорошие гайды или книги про stdatomic? Чтобы пошагово от простых примеров к сложным, а то для pthread всего навалом, а про stdatomic описание в две строчки или код на 2000 строк.

Ответы4538745392

24 фев, 19:02 297 1145387

>>1145143
Это так не работает. Вытащи ифдеф наружу и сделай две версии TEST внутри него. Алсо, есть вариант условно дефайнить ERROR_FLAG в 1 или 0 соответственно, и макросами матрчить TEST и ERROR_FLAG c TEST_0 и TEST_1 соответственно. Хотя это не твой случай, в твоем случае это только увеличит количество телодвижений. А вот если макросов, подобных TEST, будет сильно дохуя, можно задуматься.

>>1145111
В студии в Си можно, вы заебали. Сохраняй файл как .c, а не .cpp, компилируй.

>>1145334
Стандарта достаточно. Еще где-то с одной из последних cppcon было видео, где поясняли.

24 фев, 19:11 298 1145392

>>1145334
https://herbsutter.com/2013/02/11/atomic-weapons-the-c-memory-model-and-modern-hardware/ видео
Только аккуратно, про memory fences он врёт (см. http://preshing.com/20131125/acquire-and-release-fences-dont-work-the-way-youd-expect/)
Ну и см. блог http://preshing.com/archives/
http://preshing.com/20120612/an-introduction-to-lock-free-programming/
http://preshing.com/20120625/memory-ordering-at-compile-time/
http://preshing.com/20120710/memory-barriers-are-like-source-control-operations/
http://preshing.com/20120913/acquire-and-release-semantics/
http://preshing.com/20120930/weak-vs-strong-memory-models/
http://preshing.com/20121019/this-is-why-they-call-it-a-weakly-ordered-cpu/
http://preshing.com/20130618/atomic-vs-non-atomic-operations/
http://preshing.com/20130702/the-happens-before-relation/
http://preshing.com/20130823/the-synchronizes-with-relation/
http://preshing.com/20130922/acquire-and-release-fences/

14 Кб, 422x271
25 фев, 20:15 299 1145939

Бле че я рандом получаю? Задание в конце главы у Праты Фибоначчи циклом for.

Ответы4594045948

25 фев, 20:18 300 1145940

>>1145939
Разобрался ^_^

25 фев, 20:42 301 1145948

>>1145939
printf("\n"); в конце замени на putchar('\n');

Ответы45959

25 фев, 21:03 302 1145959

>>1145948
А разницы?

Ответы4596645978

25 фев, 21:13 303 1145966

>>1145959
Путчар чуть быстрее, но какой-нибудь GCC способен заменить этот вызов самостоятельно.

Ответы45969

25 фев, 21:17 304 1145969

>>1145966
Ок, спасибо.

25 фев, 21:34 305 1145978

>>1145959
В printf ты выводишь строку "\n\0", а putchar выводит только одну букву.

26 фев, 19:24 306 1146518

>>1145023
Не, проверил, не работает. Пишет файл $f не найден.

Ответы46550

26 фев, 20:53 307 1146550

>>1146518
Долго же ты собирался. Это для баша. У тебя баш?

Ответы46566

26 фев, 21:08 308 1146566

>>1146550
Нет, виндовый шелл.

Ответы46621

26 фев, 21:52 309 1146621

>>1146566
Держи для винды, шутник:
for %X in (*.elf) do objcopy -O ihex "%~fX" "%~dpnX.hex"

Ответы47571

27 фев, 14:55 310 1146919

Какой из современных языков программирования лучше всего подходит в качестве замены си?

Ответы469314707247173

27 фев, 15:27 311 1146931

>>1146919

> Какой из современных языков программирования лучше всего подходит в качестве замены си?

На самом деле подходят любые языки, ведь практически во всех них есть биндинги к C. Пишешь оптимизации байтоебли в отдельную библиотеку на сях и вызываешь её из своего кода.

27 фев, 19:24 312 1147072

>>1146919
С#, имхо. Прост и кроссплатформенен. Правда ты забыл уточнить для каких тебе задач ЯП. Может тебе и рнр за уши будет.

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

Ответы471684717348238

27 фев, 21:17 313 1147168

>>1147072
>С#, имхо.
Наркоман шоле? Я, конечно, понимаю, что тот хуй выше даже не указал сферу использования, но только наркоман будет сразу же советовать С# в качестве замены си.

Ответы4718048238

27 фев, 21:22 314 1147173

>>1147072
Слесарь, ты проебал дефис в синтаксисе.ЛОЛ
>>1146919
Смотря какие задачи собрался решать. Каждый ЯП создавался под конкретную задачу, если у ЯП нет задач, то это бейсик.
>>1147072
>С#, имхо
Пися от онанизма ещё не отвалилась?

Ответы471804718247263

27 фев, 21:34 315 1147177

Анон, как работает шина SATA3? Регистры доступа к каждому устройству мапятся куда-то в отдельную память или же есть какой-то общий участок памяти для управления всеми девайсами? Другими словами, могу ли разрешить операционной системе полноценный доступ к определенному SATA3-девайсу на уровне памяти с помощью обычных процессорных механизмов виртуализации, запретив при этом доступ к другим и не используя паравиртуализацию?

Спрашиваю тут, ибо на сосаче больше нигде не найдешь железячников

Ответы47192472114722447323

27 фев, 21:39 316 1147180

>>1147168
В чем наркомания?
>>1147173
Пидор, иди в /га

Ответы4718147204

27 фев, 21:41 317 1147181

>>1147180
>В чем наркомания?
Какой дебил будет писать на си то, что можно написать и на сишарпе? Это как советовать писать на баше вместо фортрана.

27 фев, 21:41 318 1147182

>>1147173
>Смотря какие задачи собрался решать.
Основной приоритет - высокая скорость работы, приближающаяся к си, но при этом чтоб язык программирования был современный.

Ответы4718947204

27 фев, 21:55 319 1147189

>>1147182
вся суть, пациента спрашивают, че ему сделать надо, какие задачи практические
вместо этого он мычит: "нада высокую скорость и чтобы современный был"
classic

27 фев, 21:57 320 1147192

>>1147177
от ос зависит

Ответы47196

27 фев, 22:03 321 1147196

>>1147192
Причем здесь ОС? Мне разделять устройства надо на уровне железа, в драйвере нашаманить не составит труда.

Ответы47208

27 фев, 22:16 322 1147204

>>1147180
>Пидор, иди в /га
Чмоха, нахуй ты оттуда вообще вылезал? Тут отцы решают судьбы мира, а не пилят объекты в юнити.
>>1147182
>Основной приоритет - высокая скорость работы
Высокая скорость работы ЧЕГО? Если собрался матан считать, но не знаешь какой ЯП заюзать, то у меня для тебя очень плохие новости.
>>1147182
>был современный.
Со времён реализации в аппарате фон неймана и гарварда нет таких ЯП. Они все устраевшие.
Ебашь на ассемблере и будешь первый пацан на районе. Лучше юзай ассемблер MIPS, есть вероятность, что станешь востребованным программистом.

27 фев, 22:18 323 1147208

>>1147196
>Мне разделять устройства надо на уровне железа
RTFM!!!
RTFM
Если сразу не дошло, то читай маны к стандарту.
Чего ты там собрался в драйвере шаманить, если не знаешь о стандарте?

Ответы47241

27 фев, 22:21 324 1147211

>>1147177
>как работает шина SATA3?

Так же как и sata1 и sata2 - по-сути тот же последовательный ком-порт на стероидах с дифференциальными линиями и гигабитными скоростями.

> Регистры доступа к каждому устройству мапятся куда-то в отдельную память или же есть какой-то общий участок памяти для управления всеми девайсами?

Мапятся регистры контроллера SATA, который либо отдельный либо внутри моста, что на большинстве пользовательских мамок и есть. Контроллер SATA -это уже PCI (PCIe) устройство на шине, физической ли или вшитой в сам мост и работа с ним в плане мапинга регистров и прочей ерунды идет как и для всех устройств по правилам инициализации plug'n'play pci устройств (до pnp это все настраивалось руками в биосе и переключателями на платах как диды на 286-386). Как правило этим даже не ОС занимается, а биос/uefi и операционная система получает готовые диапазоны ввода-вывода и назначенные прерывания от биоса.

Ответы47241

27 фев, 22:35 325 1147224

>>1147177
>Другими словами, могу ли разрешить операционной системе полноценный доступ к определенному SATA3-девайсу на уровне памяти с помощью обычных процессорных механизмов виртуализации, запретив при этом доступ к другим и не используя паравиртуализацию?

А это можешь даже не прибегая к кодингу ручками:

https://wiki.xen.org/wiki/VTd_HowTo

https://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM

Ответы47241

27 фев, 22:56 326 1147241

>>1147208
Ты можно более подробно объяснить? Там возможны какие-то хитрожопые режимы работы, которые позволяют или не позволяют полное разделение (и настраиваются на уровне, допустим, контроллера sata) или чего? Я ебал всю спецификацию читать чтобы понять, можно ли это сделать или нет, такое буду делать только если пойму, что это возможно.

>>1147211
>Контроллер SATA -это уже PCI (PCIe) устройство на шине
Во, это уже более интересно. Т.е. в теории чтобы реализовать пресловутый passthrough, надо делить PCI устройство, а тут без аппаратной поддержки со стороны контроллера не обойтись если это делать втупую.

>>1147224
>А это можешь даже не прибегая к кодингу ручками
Я на это и надеюсь, что уже давно есть готовые эффективные решения.
>https://wiki.xen.org/wiki/VTd_HowTo
Вот никак и не могу понять, как тут поможет IOMMU. Как разделять разные pci-устройства - понятно, но как делить PCI SATA-контроллер - загадка.
Единственное, что приходит в голову - эмуляция контроллера, но с прямым DMA, но это уже на какую-то паравиртуализацию похоже со всеми вытекающими в виде пониженной производительности %%хоть может и пони.

Ответы4724347255

27 фев, 22:57 327 1147243

>>1147241
хоть может и пониженной не настолько, как если бы использовался обычный virtio block device.

ебучий сосач и глючный хромог не дали дописать текст до конца
=(

27 фев, 23:16 328 1147255

>>1147241
> Т.е. в теории чтобы реализовать пресловутый passthrough, надо делить PCI устройство, а тут без аппаратной поддержки со стороны контроллера не обойтись если это делать втупую.

У контроллеров, как правило, порты для разных дырок разделены.

Ответы49381

27 фев, 23:31 329 1147263

>>1147173
>Каждый ЯП создавался под конкретную задачу
То есть Си не является языком общего назначения и говорить про такую классификацию в 2018 году некорректно?

Ответы47314

28 фев, 03:15 330 1147314

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

Ответы47315

28 фев, 03:22 331 1147315

>>1147314
>>общего назначения
>Нет таких ЯП и никогда не было.
Ты перепутал с универсальными языками. Их нет и никогда не было.

А общего назначения есть.

28 фев, 03:57 332 1147323

>>1147177
>не найдешь железячников
2ch.hk/hw

Ответы4735247393

28 фев, 08:19 333 1147352

>>1147323
>2ch.hk/hw

Ты хотел сказать /ra? Потому что в hw в основном потребляди, дрочащие на новые железки.

28 фев, 08:47 334 1147356

Шиндоуз Дефендер удаляет свежескомпиленый хеллоу ворлд. Какого хуя и что с этим делать? Компилирую mingw, пишу в codeblocks

28 фев, 11:12 335 1147393

>>1147323
>2ch.hk/hw
Смешно

8 Кб, 873x111
28 фев, 16:52 336 1147571

>>1146621
>for %X in (*.elf) do objcopy -O ihex "%~fX" "%~dpnX.hex"

Ответы47648

28 фев, 19:59 337 1147648

>>1147571
Это тред по языку C, если что.

Ответы47684

28 фев, 21:27 338 1147684

>>1147648
Ну так у меня вопросу по тулчейну, куда их задавать?

Ответы4768947773

sage 28 фев, 21:32 339 1147689

>>1147684
У тебя вопрос по шеллу, тебе дали два примера, оба работают, но нет, ты взял какое-то невнятное говно и пытаешься запустить там.

28 фев, 23:35 340 1147754

49 Кб, 1065x58937 Кб, 1004x480

Сисяны, я совсем даун на такой херне запороться? Во float всё работает норм, но точность не устраивает. Переделываю всё на double, выдаёт рандомную хрень. На пиках всё видно, вобщем ЧЯДНТ?

Ответы4777447791

1 мар, 00:19 341 1147773

>>1147684
По какому в жопу тулчейну. У тебя вопрос про cmd-парашу или что-то вроде того.

1 мар, 00:21 342 1147774

>>1147754
https://en.wikipedia.org/wiki/Scanf_format_string#Format_string_specifications

Ответы47824

1 мар, 01:08 343 1147791

>>1147754
Из-за особенностей variadic-функций, float, который передали в printf(), конвертится в дабл, поэтому %f печатает даблы. В scanf() же передаются указатели, они никуда не конвертятся, поэтому %f читает флоаты, а %lf - даблы.

Ответы47824

1 мар, 05:32 344 1147824

>>1147774
>>1147791
Спасибо. Смотрел "справку" по scanf в k&r, а там ни слова об этом

1 мар, 22:55 345 1148238

>>1147072
Удваиваю этого >>1147168
Использование шарпа там где нужна сишка сводится к формочкам на шарпе и вызову из сишных либ всей мякотки. Хукать системные вызовы, пердолиться с оборудованием и т.д. ты на шарпе собрался? Точно наркоман.

Ответы48320

1 мар, 23:18 346 1148262

Пиши тесты - останься без работы через 5 лет!
Пиши тесты - сделай богатого дядю ещё богаче!
Пише тесты - отбери хлеб у тестеров!

Код без тестов - это плохой код?
Для дяди который платит зарплату - это плохой код.

1) Написал тесты
2) Следал рефакторинг
3) Зарплату подняли на 3%
4) Код отдали индусам через год
5) Нахуй такой рефакториг и такие тесты
6) PROFIT вашей нелюбимой америке

1) Не пиши тесты
2) Копи бабки
3) Развали продукт
4) Утопи дядю
5) Перепеши продукт, пока есть накопленые бабки
6) Напиши тесты
7) Стань сам дядей
8) PROFIT тебе!

2 мар, 00:52 347 1148320

>>1148238
> Хукать системные вызовы, пердолиться с оборудованием и т.д. ты на шарпе собрался?
https://support.microsoft.com/en-us/help/318804/how-to-set-a-windows-hook-in-visual-c-net

Ответы48352

2 мар, 02:37 348 1148340

Пишу небольшой проектик под avr-libc. В принципе все работает как было задумано, но есть один момент который меня смущает.

Код работает на ATTiny13.В процессе обработки сигналов с датчика в переменную типа uint32_t битовыми сдвигами записываются данные. Есть программная эмуляция uart в виде функции TxByte() которая принимает на вход uint8_t. Мне нужно отправлять данные на пеку через этот самый программный uart. По идее должен быть цикл в котором я передаю 32 бита данных за 4 приема. То есть мне нужно обращаться к uint32_t как к массиву. Я использовал union таким образом:

typedef union {
uint32_t value;
uint8_t bytes[4];
} t_command;

t_command command;

Это норм или я перемудрил и есть способ проще?

Ответы48343

2 мар, 02:42 349 1148343

>>1148340
uint32_t value = ...;
for (int i = 0; i < 4; ++i) {
TxByte(value & 0xff);
value >>= 8;
}
Можешь развернуть.

2 мар, 03:49 350 1148352

>>1148320
С ума сошел? Перехватываемые SetWindowsHook вызовы ограничиваются тем что разрешено в ее первом параметре, т.е. сообщения между окошками ты перехватывать можешь, но сколько-нибудь замороченные вызовы вряд ли. На шарпе можно только вызывать функции из винапи, хукать нельзя, и дописывать к ним свои примочки нельзя (разве что через библиотеку на сишке, которая содержит все кроме гуя).

Ответы48361

2 мар, 06:17 351 1148361

>>1148352
> хукать нельзя
Можно. Всякий unsafe, Marshal и тому подобное. Но приходится заботиться о многих вещах - в нативном коде гораздо проще.
вы заебали, тут тред по Си

Ответы48451

2 мар, 13:12 352 1148451

>>1148361
Хуясе, а можно пример unsafe кода CLR, хукающего какую-нибудь хуйню изменением таблицы импорта?

Ответы48452

2 мар, 13:12 353 1148452

>>1148451
*нативную хуйню
Просто академический интерес, раньше не слышал чтобы так делали.

2 мар, 23:46 354 1148789

Всем привет я даун.
Написал программу на си для которой необходимо построить график. Решил пользоваться OpenGL.
Может кто-нибудь пожалуйста ПО ШАГАМ мне объяснить, как вообще подключить opengl чтобы в программе его функциями можно было пользоваться?
Т.Е.
Так понял для разных языков программирования какие-то разные opengl. что конкретно и откуда скачивать?
1) скачать OpenGL
2) установить его
3) ???
???
n-1) вызвать в программе библиотеку
n) написать необходимые функции
n+1) скомпилировать
n+2) радоваться

Ответы48798

3 мар, 00:07 355 1148798

>>1148789
Вкратце: говоришь гуглу glfw, качаешь, что скажут, и не выебываешься. Если тебе только график и притом быстро, говоришь не glfw, а freeglut. Скачаенное кладешь рядом с исходником и читаешь, как подключать либы в твоей IDE (если ты вдруг из командной строки компилируешь, то уже на полного дауна не тянешь). Алсо, в /gd/ есть тред по OpenGL.

> Так понял для разных языков программирования какие-то разные opengl.
OpenGL - это системная либа, она чаще всего одна на всю ОС. Для нее есть биндинги (способы вызова функций) и обертки (код, упрощающий взаимодействие - например, создающий окна вместо тебя). Биндинги зависят от языка (для Си не нужны), обертки - это те самые glfw и freeglut, они бывают в исходниках или собранные под твой компилятор.

Ответы48910

3 мар, 06:00 356 1148851

>2K18
>качать либы руками и вручную их добавлять
Хаха, ебать вы сишники лошары)) Вот у нас в Джаве в maven вставил зависимость и всё))

3 мар, 08:18 357 1148858

Bump

3 мар, 08:19 358 1148859

Bump number

3 мар, 09:19 359 1148867

немогу найти эту книгу на русском

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)

Ответы4903649364

3 мар, 12:38 360 1148910

>>1148798
Так, а получается в командной строке же что-то еще прописать надо будет? Если GLWF будет лежать рядом с исходным кодом при компиляции.

Ответы4891549069

3 мар, 12:54 361 1148915

>>1148910
@
открыл ридми

Ответы48972

3 мар, 15:29 362 1148972

>>1148915
> TODO: readme

3 мар, 15:47 363 1148993

Не стукайте сильно. Не понимаю что происходит и можно ли так делать (наверняка нельзя).
https://pastebin.com/JqSfUxSz
Первое что меня смутило мол я могу на стеке выделять неизвестное заранее место под массив.
ОК, допустим если бы он не выходил за скоуп функции kek, все было бы ок и стек почистился бы. Но ведь я передаю указатель на массив arr черти куда, раз я не вызывал никакого *alloc то и free я вроде звать не должен. Что э это получается указатель станет не валидным (будет какой-то мусор на стеке показывать) сразу после выхода из скоупа kek?

Ответы4900049028

3 мар, 15:51 364 1149000

>>1148993
Ебать я лох, простыню настрочил, а проверить что собственно будет не проверил, после того как пытаюсь считать что либо с возвращенного указателя сразу segfault. Со статически выделенными локальными (ну там хуяк char chars[144]) я так понимаю та же байда будет?

Ответы4902849029

3 мар, 17:02 365 1149028

Ебать, коллективный разум. У меня проблема почти как у него >>1148993 >>1149000, только прога сложнее.
Нужно захерачить в массив значения из файла с 1500000 — 2000000 даблов, причём желательно сделать это не в main. Вот код: https://pastebin.com/683a6BcS. Я даже сам понимаю, почему оно не должно работать (первый malloc и все последующие realloc'и в функции, а после её выполнения они у проги отбираются), но нет никаких идей, как сделать так, чтобы работало. Опытные байтоёбы, подскажите, как это по-человечески сделать.

Ответы490334904149069

3 мар, 17:03 366 1149029

>>1149000
Статика выделяется не на стеке, а в памяти

Ответы49054

3 мар, 17:11 367 1149033

>>1149028
Почитал в к&р про статические переменные, дописал статик перед дабл вальюс, заработало.

3 мар, 17:18 368 1149036

>>1148867
На русский переведены только самые базовые вещи, годящиеся для написания хеллоувордов. А основной массив информации придется искать и переводить самим.

Ответы49346

3 мар, 17:23 369 1149037

Всё байтоёбите?

Ответы49044

3 мар, 17:33 370 1149041

>>1149028
в первый проход по файлу считаешь количество чисел в нем
выделяешь память, необходимую для хранения этого количества
считываешь числа в этот массив
из функции out параметром возвращаешь этот массив, а в качестве возвращаемого значения фии - количество элементов в массиве

Ответы4904349089

3 мар, 17:41 371 1149043

>>1149041
А сделать статический массив хуже?

Ответы49046

3 мар, 17:42 372 1149044

>>1149037
Как что-то плохое.

3 мар, 17:50 373 1149046

>>1149043
размер статического массива должен быть известен на этапе компиляции
личное: надеюсь что ты студент еще и учишься, если уже работаешь то это конечно писец

Ответы4905349066

3 мар, 18:04 374 1149053

>>1149046
А бегать два раза по файлу только что бы посчитать строки не песец?
мимоанон

Ответы49058

3 мар, 18:06 375 1149054

>>1149029
Я неправильный термин использовал, конечно это не статически выделенный массив.

3 мар, 18:14 376 1149058

>>1149053
это выйдет дешевле, чем делать реаллоки

Ответы49075

3 мар, 18:17 377 1149059

Есть буферы в 1024 байта и 1055. При записи большого количества информации в файл с помощью вызова write время выполнения программы не меняется. Почему так происходит? Я где-то слышал, что размер буфера должен быть адекватным, иначе записываться будет медленнее.

Ответы49069

3 мар, 18:30 378 1149066

>>1149046
Выразился не правильно. Я про static double value[1]; . Да и реаллоки там не все ~1700000, а где-то тысяч 20.

3 мар, 18:43 379 1149069

>>1148910
В конец команды добавляешь название либы. Если это майкрософт и сочувствующие, просто дописываешь glfw3.lib, если гцц "-L. -lglfw" (без кавычек).

>>1149028
У тебя там адский ад. Ты в передаваемый функции массив не пишешь, ты перезаписываешь указатель на этот массив указателем, который вернул malloc(), туда пишешь, потом эту память забываешь и выходишь из функции. В массиве из main() как был, так и остается мусор. Тебе нужно было принимать указатель на указатель на дабл, если ты хотел динамическое выделение памяти.

>>1149059
write - это один целый системный вызов. Куча тактов на то, чтобы переключить режим процессора, сохранить стейт, побегать по ядру, подергать дрова, вернуть стейт и переключиться обратно. С начала этого года из-за патчей против мельдониума это стало еще дороже. Соответственно, чем больше информации ты можешь передать за раз, тем меньше будут накладные расходы. Возьми крайние случаи - померяй с буферами в 1 байт и 64 килобайта на полугиговом файле.

Ответы49082

3 мар, 18:57 380 1149075

>>1149058
Почему? Я конечно не знаю как в точности сделан например std::vector, но там разве не то же самое? Наполнились - ресайзнулись раза в полтора-два и ебашим дальше, тогда и ресайзов не так много будет. Ну или жабовский ArrayList - создаем новый блок и копируем все из старого.

Ответы49089

3 мар, 19:07 381 1149082

>>1149069
>Возьми крайние случаи - померяй с буферами в 1 байт и 64 килобайта на полугиговом файле.
Да, там разница очевидная по вполне понятным причинам. Но я же спрашивал про буферы странных размеров. Вроде бы где-то читал, что буфер должен быть размера страницы или хотя бы степенью двойки. Но я мог что-то не так понять и вообще вкатывающийся ньюфаг.
И почему если сделать буфер слишком большим, то время выполнения увеличивается?

Ответы49138

3 мар, 19:21 382 1149089

>>1149075
для тебя в первую очередь по той причине, что с реаллоками ты написал очень грязный код, знаний и опыта тебе явно не достаточно
а по алгоритму, предложеному здесь >>1149041 есть хоть какая то надежда что ты напишешь более-менее рабочий вариант

второе: в и крестах, при использовании вектора для решения этой задачи, я бы прикинул - не выгоднее ли будет оценить количество чисел и не сделать ли вектору предварительный vector::reserve

Ответы49090

3 мар, 19:24 383 1149090

>>1149089
Я не тот чувак что накидал тот код. Конечно резерв самортизирует. Но вон жеж живут с реаллоками.

Ответы49140

3 мар, 21:29 384 1149138

>>1149082
> Но я же спрашивал про буферы странных размеров
Там особой разницы быть не должно. Максимум какая-нибудь мелочь типа блочного копирования памяти по 16-32-64 байта за раз и fallback к побайтовому копированию в конце буфера, не кратного размеру блока. Разницы во времени выполнения не заметишь. Ну или если мы слегка превышаем размер страницы, придется тратить время на управление второй страницей. Все это вилами на воде писано и очень сильно зависит от реализации. Какое-то конкретное поведение на конкретной ОС можно разобрать, конечно.

> И почему если сделать буфер слишком большим, то время выполнения увеличивается?
Пруфы?

Ответы4914149281

3 мар, 21:30 385 1149140

>>1149090
тогда ему следовало провести разделение кода:
реализовать динамический массив и интерфейсы доступа к нему
далее использовать этот массив, чтобы прочитать в него числа из файла

3 мар, 21:32 386 1149141

>>1149138
ты же пишешь что только начинаешь изучение
в этом случае не стоит вообще задумываться о производительности, но о реализации алгоритма без ошибок

Ответы49281

4 мар, 02:10 387 1149281

>>1149138
Спасибо за ответ.
>Пруфы?
Да вот только что проверил у себя на компе.
>>1149141
Я начинаю изучать всякие низкоуровневые штуки, но не программирование. Но я тебя понял. Просто иногда все-таки становится любопытно и хочется подробностей.

Ответы49295

4 мар, 02:20 388 1149288

Репостну из крестового треда, вдруг кто в теме

Ковыряю GUI в WinAPI, хочу менять прозрачность окна по mouse enter/mouse leave ручной анимацией (не AnimateWindow). И тут внезапно для меня я понял, что такие вещи по добру бы делать асинхронно. Вот только если я запущу тред из WndProc, то мне надо либо тут же его join'ить, чтобы по выходу из скоупа поток не распидорасило. Так вот, как асинхронно выполнять манипуляции с окнами в WinAPI в общем случае?

Ответы49295

4 мар, 02:35 389 1149295

>>1149281
> Да вот только что проверил у себя на компе.
Это хуевые пруфы. Что писал, сбрасывал ли кэши, что в это время работало в фоне - все это влияет. Я не вижу причин, почему скорость должна уменьшаться при росте размера буфера (если его размер - степень двойки, если в системе достаточно свободной оперативки, чтобы он был не в свопе, если повторять тесты несколько раз и т. п.).

>>1149288
Зачем тебе тред? Выставь таймер, по WM_TIMER меняй свою прозрачность, тебе его за глаза хватит даже на загруженной системе. А вертеться в спинлупе в отдельном треде и жрать CPU ради такой ерунды - это пиздец вообще.

> то мне надо либо тут же его join'ить
Ты там тредами из C11 обмазался или pthread притащил? Это достаточно странный подход к Windows API, там есть свои треды, своя синхронизация на все случаи жизни. С чего ты решил, что поток должно распидорасить?

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

Ответы49305

4 мар, 03:09 390 1149305

>>1149295
>Ты там тредами из C11 обмазался
Да, им. Думал еще про CreateThread, но там хэндл возвращается, а его нужно где то хранить или так же WaitForSingleObject вызывать, что режет асинхронность. (что вроде как тот же std::thread::join()). std::thread как я понял да, пидорасится по выходу из скоупа.
Про таймер сенкс, вообще про него забыл в WinAPI. Он по умолчанию асинхронно запускается?

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

И что делать, если мне нужен результат, но при этом я не хочу для этого вешать основной поток? Запускать обработчик результата также через таймер и вешать его через мьютекс, который сбросится, когда в процедуре другого таймера получится результат?

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

Ответы49307

4 мар, 03:51 391 1149307

>>1149305
> а его нужно где то хранить
Ну хэндл окна же ты где-то хранишь? На худой конец, есть всякие Get/SetWindowLongPtr и соответствующие поля в WNDCLASS, есть Get/SetProp, туда можно положить указатель на объект класса (у нас в сишечке - просто на структурку), а в оконной процедуре указатель дергать и оттуда уже доставать хэндлы. Алсо, ты можешь вообще ничего не хранить. Если тебе на все похуй, ты можешь запустить поток, сразу закрыть его хэндл (не забудь только, а то памятью истечешь), и пущай оно там себе работает. Доработает - завершится. Единственная проблема - если во время его работы завершится основной поток, то система прихлопнет и worker тоже.

> заранее создавать потоки, которые в while (1) также ждали бы сброс мьютекса, выполняли бы какую нибудь задачу и засыпали
Норм, так обычно и делается. Если у нас не OpenMP, а именно ручное управление потоками, то проще всего именно создать поток заранее, реализовать producer-consumer и кормить поток/потоки задачами. Вот тут уже при завершении программы можно worker-ам сказать, что их смерть близка и подождать в join/WaitForЧтоНибудьТам, пока они это осознают, приберутся за собой и убьют себя об стену. А как конкретно ты это скажешь - дело твое: есть volatile всякие, атомики, мьютексы, банальный GetMessage, WaitForSingleObject.

> std::thread как я понял да, пидорасится по выходу из скоупа.
Так не создавай его в скоупе. Создавай в виде поля класса, и new тоже никто не отменял, опять же.

> таймер
> Он по умолчанию асинхронно запускается?
Через указанные промежутки времени (примерно) система постит тебе в очередь сообщений WM_TIMER. Это достаточно асинхронно?

> И что делать, если мне нужен результат, но при этом я не хочу для этого вешать основной поток?
Зависит от того, чего именно ты хочешь добиться. И как ты собираешься этим пользоваться. Если у тебя в основном потоке GUI, никаких мьютексов и прочей хуйни, кроме как очень ненадолго, туда пихать нельзя (пока ты ждешь или работаешь - сообщения не обрабатываются, а юзер матерится, что у него интерфейс не реагирует). Но ты можешь сделать какую-нибудь переменную, опционально защитить с помощью critical section или того же мьютекса, просто записать туда результат и просто послать сообщение окну, что у тебя теперь есть этот результат. Окно может тоже как-то просигналить в worker, что все ок.

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

4 мар, 03:51 391 1149307

>>1149305
> а его нужно где то хранить
Ну хэндл окна же ты где-то хранишь? На худой конец, есть всякие Get/SetWindowLongPtr и соответствующие поля в WNDCLASS, есть Get/SetProp, туда можно положить указатель на объект класса (у нас в сишечке - просто на структурку), а в оконной процедуре указатель дергать и оттуда уже доставать хэндлы. Алсо, ты можешь вообще ничего не хранить. Если тебе на все похуй, ты можешь запустить поток, сразу закрыть его хэндл (не забудь только, а то памятью истечешь), и пущай оно там себе работает. Доработает - завершится. Единственная проблема - если во время его работы завершится основной поток, то система прихлопнет и worker тоже.

> заранее создавать потоки, которые в while (1) также ждали бы сброс мьютекса, выполняли бы какую нибудь задачу и засыпали
Норм, так обычно и делается. Если у нас не OpenMP, а именно ручное управление потоками, то проще всего именно создать поток заранее, реализовать producer-consumer и кормить поток/потоки задачами. Вот тут уже при завершении программы можно worker-ам сказать, что их смерть близка и подождать в join/WaitForЧтоНибудьТам, пока они это осознают, приберутся за собой и убьют себя об стену. А как конкретно ты это скажешь - дело твое: есть volatile всякие, атомики, мьютексы, банальный GetMessage, WaitForSingleObject.

> std::thread как я понял да, пидорасится по выходу из скоупа.
Так не создавай его в скоупе. Создавай в виде поля класса, и new тоже никто не отменял, опять же.

> таймер
> Он по умолчанию асинхронно запускается?
Через указанные промежутки времени (примерно) система постит тебе в очередь сообщений WM_TIMER. Это достаточно асинхронно?

> И что делать, если мне нужен результат, но при этом я не хочу для этого вешать основной поток?
Зависит от того, чего именно ты хочешь добиться. И как ты собираешься этим пользоваться. Если у тебя в основном потоке GUI, никаких мьютексов и прочей хуйни, кроме как очень ненадолго, туда пихать нельзя (пока ты ждешь или работаешь - сообщения не обрабатываются, а юзер матерится, что у него интерфейс не реагирует). Но ты можешь сделать какую-нибудь переменную, опционально защитить с помощью critical section или того же мьютекса, просто записать туда результат и просто послать сообщение окну, что у тебя теперь есть этот результат. Окно может тоже как-то просигналить в worker, что все ок.

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

Показать весь текст
Ответы49437

4 мар, 09:08 392 1149346

>>1149036
ну хотя бы это
Plauger, PJ. The Standard С Library. Englewood Cliffs, NJ: Prentice Hall, 1992.

Ответы4936449560

4 мар, 09:14 393 1149348

нашел
http://sharpened.ucoz.ru/lib/polnyj_spravochnik_po_c-gerbert_shildt-2006.pdf

4 мар, 10:13 394 1149364

>>1149346
>>1148867
Ты инвалид что ли? Учи английский.

4 мар, 11:15 395 1149381

>>1147255
Не разделены, хочешь полноценной производительности - прокидай полностью контроллер со всеми подключенными винчестерами, либо покупай отдельный PCI-e SSD для виртуалки, либо покупай какие-то экзотические сервервные контроллеры с поддержкой SR-IOV.

4 мар, 13:41 396 1149437

>>1149307
>Через указанные промежутки времени (примерно) система постит тебе в очередь сообщений WM_TIMER. Это достаточно асинхронно?
Да чёт не очень. Я почитал на msdn про WM_TIMER и что можно получить в wParam id таймера, но это ж всё равно саму задачу придется выполнять в петле сообщений в основном (считай GUI) потоке или опять же выдумывать что нибудь с потоками? В SetTimer можно еще передать TimerProc, вот только я не нашел на msdn нигде упоминаний о том, что он в отдельном потоке работать будет. Хз, может это подразумевается. Сейчас проверю.

Ответы4944249746

4 мар, 13:49 397 1149442

>>1149437
>Да чёт не очень.
А, пожжи. Я кажется понял. Если сейчас в колбэке таймера я планировал делать что то типа
while (opacity < 100)
{
SetLayeredWindowAttributes(hWnd, 0, 100 + opacity++, LWA_ALPHA);
Sleep(10);
}
То теперь я просто говорю таймеру 100 раз с интервалом в 10 миллисекунд в основном потоке сделай мне SetLayeredWindowAttributes()?

Ответы49625

4 мар, 16:45 398 1149545

http://www.cyberforum.ru/c-beginners/thread2205010.html

Ответы49546

4 мар, 16:46 399 1149546

>>1149545
как вообще можно проверять подобное

4 мар, 16:55 400 1149560

>>1149346
Пойми, без знания инглиша начинать бесполезно. Вот смотри, ты потратишь год на базовую переводную литературу, напишешь хеллоуворды, а при попытке написать что-то более-менее серьезное и реально нужное гарантированно обосрёшься. Потому что тебе одновременно придется не только вникать в сложную новую информацию по программированию, но и изучать иностранный язык, на котором эта информация предоставляется. Так что для начала потрать годик-другой на изучение инглиша.
Ну а если у тебя нет столько времени и нужны бабки здесь и сейчас, то учи 1С — разработку отечественного производителя. Там вся необходимая документация на русском.

Ответы49798

4 мар, 20:00 401 1149625

>>1149442
Да, все именно так. Это не очень удобно, зато нативно и просто.

5 мар, 00:46 402 1149746

>>1149437
>В SetTimer можно еще передать TimerProc, вот только я не нашел на msdn нигде упоминаний о том, что он в отдельном потоке работать будет. Хз, может это подразумевается. Сейчас проверю.
Что ты не нашёл? Там всё человеческим языком по белому написано:
An application can process WM_TIMER messages by including a WM_TIMER case statement in the window procedure or by specifying a TimerProc callback function when creating the timer. When you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER. Therefore, you need to dispatch messages in the calling thread, even when you use TimerProc instead of processing WM_TIMER.

5 мар, 07:02 403 1149798

>>1149560
хули там англопарашу изучать, 800 слов и читай любую книгу по канпутерам

7 мар, 07:09 404 1151008

Установил LLVM-5.0.1-win64.exe , MinGW-w64 for 64 bit , На один диск, g++ запускал, в Path всё прописал. Собственно как запустить компилятор? Вопрос тупой конечно, но что поделать. Выполнял всё как в этом гайде http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt2/

Ответы5101051277

7 мар, 07:23 405 1151010

>>1151008
Походу допетлил, что нужно visual studio ставить

Ответы5101551277

7 мар, 07:52 406 1151015

>>1151010
Какую vs скачать? Мне нужно просто установить clang и писать свои хеллоуворды

Ответы5101651277

7 мар, 08:08 407 1151016

>>1151015
В общем, как я понял.
1.Visual C++ Redistributable for Visual Studio 2015 Update 1
2. Накатываю Microsoft Build Tools 2015
3. Накатываю LLVM-5.0.1
4. Дальше запускаю Vs и начинаю там пытаться хеллоувордить
Всё верно?

Ответы5123351277

7 мар, 17:49 408 1151233

>>1151016
Скачиваешь gcc и notepad++ с Nppexec-плагином.
Хеллоувордишь-неперехеллоувордишь.

7 мар, 19:27 409 1151277

>>1151008
>>1151010
>>1151015
>>1151016
Маня, не еби мозги себе и окружающим. Все эти IDE не для вкатывальщиков, а для промышленного использования. Юзай блокнот, консоль и mingw/cygwin, а лучше лялих, но это если хочется вкатиться в сишечку по полной.

Ответы51280

7 мар, 19:46 410 1151280

>>1151277
Сам маня
Спасибо

7 мар, 23:55 411 1151364

Есть красивые-модные-молодежные статьи по использованию pthreadов или только доские мануалы и книги?

8 мар, 00:17 412 1151370

В чем отличие компилирования в cmd и в msys? Компилировал свой хеллойворлд, там и там писал всё одно и тоже, так в чём разница?

Ответы51402

sage 8 мар, 07:05 413 1151402

>>1151370
Всегда компилирую в cmd, мне норм. Но всякие configure в cmd ты не запустишь, зато в sh/bash вполне.

Ответы5140451405

8 мар, 07:20 414 1151404

>>1151402
Честно говоря не знаю пока о чём ты в последних строчках, сейчас пока разбираюсь с командой dbg, по идее скомпилировал простой код в exe файл, запускаю код, пишу dbg, а в ответ сообщение о не запущеном приложении

8 мар, 07:22 415 1151405

>>1151402
Пидр, нахуя под сажей пишешь.

TerminateProcess ошибка 5 Отказано в доступе 8 мар, 16:56 416 1151583

Суп. Короче, есть код:

CreateProcess(...);
TerminateProcess(...)
Процесс создается и тут же завершается (это окошко калькулятора), на экране даже окошко не мелькает. А мне, предположим, надо чтобы мелькало. Я делаю так:

CreateProcess(...);
WaitForInputIdle(...);
TerminateProcess(...);
и TerminateProcess выдает ошибку 5. Вообще ничего не меняя, вставляем вызов WaitForInputIdle посередине - и TerminateProcess перестает работать, как будто бы вызов WaitForInputIdle где-то под капотом еще и лишал меня права на вырубить мной же созданный процесс. Что я делаю не так? inb4 пердолюсь с винапи

Ответы5159051787

8 мар, 17:03 417 1151590

>>1151583
Зачем ты последовательно вызываешь эти функции? Их необходимо вешать на события.

Ответы51646

8 мар, 17:51 418 1151646

>>1151590
Какая разница в контексте задачи?

8 мар, 19:45 419 1151771

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

8 мар, 20:28 420 1151787

>>1151583
Ну ты бы хоть код выложил, ОС указал, вся хуйня. Может быть, у тебя баг где-то, хуй тебя знает, мы тут не телепаты. Специально попробовал в XP/7/10. Все работает, никаких ошибок, хотя окошко не мигает - с чего бы ему мигать?

Ответы5178851961

8 мар, 20:30 421 1151788

>>1151787
64-битная Windows 8.1, на ней 32-битное приложение. Код - вот на этом прототипном коде ошибка.

Ответы51817

8 мар, 21:24 422 1151817

>>1151788
Если тебе нужна помощь, тащи полный компилирующийся пример, потому что проблема скорее всего именно в тебе. Если нет - дампи нтстатусы, смотри всякими ProcessExplorer-ами хэндллы и права.

Ответы5184851961

8 мар, 22:09 423 1151848

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

9 мар, 01:21 424 1151961

>>1151787
>>1151817
Я даун, проблема была в приложении (сборка ms office от васяна, terminateprocess на нее странно реагирует), всем спасибо, все свободны.
Допёр когда копировал на пастбин пример для проверки и по приколу заменил путь до офиса на calc.exe.

Ответы52538

sage 9 мар, 19:32 425 1152452

>>1138954 (OP)
есть ли смысл делать своим основным языком c++?

Ответы52538

9 мар, 21:29 426 1152538

>>1151961
Проблема была не в этом.

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

41 Кб, 597x586
10 мар, 01:24 427 1152707

Суп, анонасы.

Как правильно делать #define в хедерах и потом компилировать?

Вот я хочу чтобы у меня при компиляции с одним параметром например использовался шрифт Tahoma (допустим) а при другом параметре шрифт Wingdings, при этом в таком случае шрифт Tahoma в конечной программе вообще отсутствовал.

Я так понял это что-то связанное с прекопиляторной директивой #if должно быть?

А сами указатели тогда куда вставлять, в C compiler - Miscellaneous?

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

Ответы52713

10 мар, 01:30 428 1152713

>>1152707
Делаешь ключик компилятору типа -Dимя, например, -DSOMETHING, оно делает дефайн. В коде:
#ifdef SOMETHING
// Или #if defined(SOMETHING) то же самое
static const char font[] = "Tahoma";
#else
static const char font[] = "Wingdings";
#endif

Ответы52722

10 мар, 01:40 429 1152715

>>1138954 (OP)
Современным компиляторам пох на recursion и tail-recursion и они все оптимизируют в луп?

Ответы52718

10 мар, 01:49 430 1152718

>>1152715
TCO обычно есть, но стандарт не гарантирует, поэтому полагаться не стоит.

19 Кб, 586x217
10 мар, 01:59 431 1152722

>>1152713
Я так понял в эклипсе это будет Compiler - symbols -Define syms? Не в препроцессорных директивах?

А после #if define(SOMETHING)
можно дохуя кода написать а потом #elif вставить и еще дохуя кода написать?

Можно вставлять #ifdef в середине кода или вообще прямо в функциях?

И его нужно в хедеры вставлять или в .c тоже можно?

И если я сделаю

#ifdef SOMETHING
// Или #if defined(SOMETHING) то же самое
void foo(bar);
#elif NOT_SOMETHING
void foo(bar2);

Компилятор не станет ругаться что я пытаюсь redefin'ить функции?

Ответы52726

10 мар, 02:12 432 1152726

>>1152722
> Я так понял в эклипсе это будет Compiler - symbols -Define syms?
Видимо да. Вон там -D написано.

> можно дохуя кода написать а потом #elif вставить и еще дохуя кода написать?
Можно так, можно даже условно инклудить другие файлы. Препроцессор еще до передачи компилятору все развернет, а лишнюю ветку просто выкинет (скомпилируй с ключом -E или -save-temps, поймешь), поэтому можешь использовать это где угодно и как угодно. Никаких проблем с redefinition или каких-то других проблем не будет.

> #elif NOT_SOMETHING
Нет, если хочешь #elif, делай #elif defined(SOMETHING_ELSE) или #elif !defined(SOMETHING) и т. д. И #endif не забудь.

Ответы5273252745

10 мар, 02:32 433 1152732

>>1152726
Охуенно, спасибо тебе анон!

10 мар, 03:04 434 1152745

>>1152726
Хотя, можешь еще пояснить про макросы или что-то подобное?

Хочу распарсить флаг, например я пишу -D AB или -D CD

И вместо того чтобы прописывать дефайны для каждого флага сделать что-то вроде

#define CTRL CONTROL+str[0]
#define DAT DATA+str[1]

Чтобы получить CONTROLA и DATAA если я поставлю флаг AB или CONTROLC и DATAD если проставлю флаг CD ?

Ответы52753

10 мар, 04:49 435 1152753

>>1152745
Нет, так не получится. У тебя макросы. Замена одних токенов на другие. Зато можно так:
#ifdef SOMEFLAG
#define VAR1 A
#define VAR2 B
#else
#define VAR1 C
#define VAR2 D
#endif

// Можно вместо этого #if в командной строке: -DVAR1=A -DVAR2=B или -DVAR1=C -DVAR2=D

// И потом магия препроцессора. Что-то типа:

#define CONCAT_(A, B) A##B
#define CONCAT(...) CONCAT_(__VA_ARGS__)
#define CTRL CONCAT(CONTROL, VAR1)
#define DATA CONCAT(DAT, VAR2)

Больше ничего предложить не могу. И прежде чем такое использовать, тоже подумай хорошо.

Ответы52774

10 мар, 07:29 436 1152774

>>1152753
А какие еще есть варианты как делать compile-time configuration чтобы не дрочить препроцессор но при этом экономить место?

Алсо, сейчас пытаюсь написать простой макрос вида #define TESTAAB(variable) variable
Чтобы он резолвил variable в variable, но что-то эта хрень не работает и выдает мне кучу ошибок, а гугл выдает или простые ответы по макросам, или простые ответы по указателям.

Можно в макросе как-то резолвить переменную в ее указатель?

Ответы5277553074

10 мар, 07:44 437 1152775

>>1152774
Бля, походу это оказалось из-за того что забыл хедер включить в код

10 мар, 18:46 438 1153074

>>1152774
> А какие еще есть варианты как делать compile-time configuration чтобы не дрочить препроцессор но при этом экономить место?
Так #ifdef для экономии места более чем достаточно. Линуксовому ядру норм, а тебе почему-то нет?

10 мар, 22:58 439 1153184

Получение указателя на элемент структуры через указатель, то есть:
struct test{int c; char arr[MAX];};

struct test str;
struct test *pointer = &str;

int c = &pointer -> c;
char y = &pointer -> arr[2];

Законно вообще или это пиздец и нужно по другому?
Дело в том, что в случае с взятием адреса целого числа оно вроде как и сработало (я проверил - записалось ли значение куда надо при вызове scanf()), а у меня ниже кучка scanf() и они толи хвосты с '\n' из потока читают и наёбываются, толи такое обращение у элементам структур стек пидорасит. Если ответа на такой дибильный вопрос не будет, я конечно перепишу всё по нормальному. Но если проблема не в обращениях, буду искать почему scanf() не хочет делать то что ей полагается.

Ответы5318553283

10 мар, 22:59 440 1153185

>>1153184
Блядь, там звёздочки, естественно:
int c
char y

Ответы53245

11 мар, 00:49 441 1153245

>>1153185
В шапке ссылка на пейстбин для кого?

11 мар, 02:44 442 1153283

>>1153184
>Законно вообще или это пиздец и нужно по другому?
Да, все нормально. У -> и [] приоритет выше, чем у &, так что все работает, как ты ожидаешь. Ищи проблемы в своих scanf.

11 мар, 14:16 443 1153444

пацаны, это норм, что экзешник
int main(){return 0;)
весит 53кб?

Ответы53448

11 мар, 14:18 444 1153448

>>1153444
Рантайм.

Ответы5345653642

11 мар, 14:27 445 1153456

>>1153448
спасибо

Ответы53627

11 мар, 16:55 446 1153627

>>1153456
шо токои рантайм

Ответы53839

11 мар, 17:19 447 1153642

>>1153448
алсо что токои реализация си и или стандарт, разные ли это вещи. объясните плезь никак не могу разобраться в этом, я новичок хуечок

Ответы55087

11 мар, 19:51 448 1153839

>>1153627
Обвязка для запуска на конкретной ОС.

12 мар, 12:50 449 1154412

>>1138954 (OP)
Анон, что такое DDK (Driver development kit)? Чет не могу понять, кем оно пишется и кем используется: разработчиками железа для разработчикоов юзерспейс софта под определенную ОС или разработчиками ОС для разработчиков железа? Где-то вообще можно вкратце почитать об этом?

Ответы5449754732

12 мар, 14:39 450 1154497

>>1154412
микрософто петуханами для разработки дров

Ответы55400

12 мар, 22:10 451 1154732

>>1154412
ДДК по сути СДК под кернелспейс, для написания дров, бекдоров и прочей шняги под вынь. Пилят индусы из микрософта.

Ответы55400

1 Кб, 207x76
12 мар, 23:12 452 1154762

Либо я совсем ёбнулся, либо как может быть такое, что указатель переданный в функцию самопроизвольно изменил адрес хранящейся в нём переменной (long double)? У меня в функции идёт сравнение указателей (2 параметра), я передаю в качестве аргумента адрес возвращённый функцией (всё нормально, он не меняется) и адрес записанный в указателе (и вот тут он оказывается изменён.) У меня на скриншоте 1й адрес - то что возвратила функция и то что я передал как 2й аргумент, 2й адрес - адрес хранящийся в указателе который я передаю в качестве 1 аргумента. На выходе 3й адрес - это то что функция самопроизвольно поменяла, а 4й - то что осталось таким, каим и должно было быть.

Ответы5476654770

12 мар, 23:22 453 1154766

>>1154762
Проще было спастить код сюда, да?

Ответы55167

12 мар, 23:25 454 1154770

>>1154762
> Либо я совсем ёбнулся
this. Может, ты указатель на указатель передаешь или портишь что-то. Тащи код, хотя бы строчку с вызовом и строчку c printf.

Ответы55167

13 мар, 02:07 455 1154848

вот вопрос появился, допустим есть ц компилятор под, например процессор з80, в котором что-то не по стандарту, то это можно считать эмбендед с?

> All the fundamental types are provided, but as noted above short is the same as int, as is long.
> 16 bit

> Sign extension is not performed when converting characters to integers, so characters appear as integers in the range 0...255.

> The compiler generally computes expressions from the inside-out and from left to right but. as stated in the reference manual, this should not be relied upon as it may change between releases of the compiler.
> Integer overflows are ignored as are attempts to divide by zero.
> Floating-point numbers are not yet available so this section has no relevance.

> и тонна упрощений синтаксиса языка... но в конце концов он запускался на спектруме.

> The second difference is that all local variables must be declared at the head of a function body and may not be declared at the head of nested compound statements.

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

но вообще, главная проблема это постоянно перекастовывать в выражениях обратно в char (у проца кастрированный 16 бит) - наверняка он (компилятор) не кастует неявно в инт,

> Sign extension is not performed when converting characters to integers, so characters appear as integers in the range 0...255.
> Integer overflows are ignored
как думаете?

Ответы5485654876

13 мар, 02:36 456 1154856

>>1154848
>как думаете?
Хуйня без задач для вырывания гланд через жопу. Макроассемблер обоссыт этот конпелятор с 14-го этажа.

Ответы55488

13 мар, 03:21 457 1154876

>>1154848
Можно считать компилятором языка, основанного на Си.

13 мар, 13:36 458 1154987

Двач-помогач-программач, помоги. Читаю K&R, добрался до массивов указателей, но, как обычно нихуя не работает (это не книжный код, а колхоз, чтобы просто понять как оно работает).

Вот код

#include <stdio.h>
#include <string.h>
#define MAXLINES 5000 / максимальное число строк /
#define MAXLEN 1000000

char lineptr[MAXLINES]; // Собственно массив указателей
char file[MAXLEN]; // Это массив, в котором полностью записан ручной ввод
char linetest[MAXLEN]; // Массив в который будет записываться по одной строке
char a = file;

int get_line(char to, char from);
void get_file(char s);

int main()
{
int len;
int nlines = 0; / количество прочитанных строк /
get_file (a);
while (a != '\0')
{
len = get_line (linetest, a);
char p;
p = linetest;
lineptr[nlines++] = p;
printf ("%s s nomerom %d\n", lineptr[3], nlines);
a = a + len;
}

}

// Читаем весь ввод в массив

void get_file(char s)
{
int c;
while ((c = getchar()) != EOF)
{
s = c;
s++;
}
s = '\0';
}

// Получаем строку из массива

int get_line(char to, char from)
{
int len = 0;
while (from != '\n' && from != '\0')
{
to++ = from++;
len++;
}
if (from == '\0' || from == '\n')
{
*to = '\0';
len++;
}
return len;
}

После того, как я вбиваю в консоль стихотворение

The shepherds went their hasty way,
And found the lowly stable-shed
Where the Virgin-Mother lay:
And now they checked their eager tread,
For to the Babe, that at her bosom clung,
A Mother's song the Virgin-Mother sung.

Мне выдает результат

(null) s nomerom 1
(null) s nomerom 2
(null) s nomerom 3
And now they checked their eager tread, s nomerom 4
For to the Babe, that at her bosom clung, s nomerom 5
A Mother's song the Virgin-Mother sung. s nomerom 6

К первым трем строкам вопросов нет. Но почему в дальнейшем начинает перезаписываться lineptr[3]? Ведь в моем случае результат должен выглядеть так

(null) s nomerom 1
(null) s nomerom 2
(null) s nomerom 3
And now they checked their eager tread, s nomerom 4
And now they checked their eager tread, s nomerom 5
And now they checked their eager tread, s nomerom 6

13 мар, 13:36 458 1154987

Двач-помогач-программач, помоги. Читаю K&R, добрался до массивов указателей, но, как обычно нихуя не работает (это не книжный код, а колхоз, чтобы просто понять как оно работает).

Вот код

#include <stdio.h>
#include <string.h>
#define MAXLINES 5000 / максимальное число строк /
#define MAXLEN 1000000

char lineptr[MAXLINES]; // Собственно массив указателей
char file[MAXLEN]; // Это массив, в котором полностью записан ручной ввод
char linetest[MAXLEN]; // Массив в который будет записываться по одной строке
char a = file;

int get_line(char to, char from);
void get_file(char s);

int main()
{
int len;
int nlines = 0; / количество прочитанных строк /
get_file (a);
while (a != '\0')
{
len = get_line (linetest, a);
char p;
p = linetest;
lineptr[nlines++] = p;
printf ("%s s nomerom %d\n", lineptr[3], nlines);
a = a + len;
}

}

// Читаем весь ввод в массив

void get_file(char s)
{
int c;
while ((c = getchar()) != EOF)
{
s = c;
s++;
}
s = '\0';
}

// Получаем строку из массива

int get_line(char to, char from)
{
int len = 0;
while (from != '\n' && from != '\0')
{
to++ = from++;
len++;
}
if (from == '\0' || from == '\n')
{
*to = '\0';
len++;
}
return len;
}

После того, как я вбиваю в консоль стихотворение

The shepherds went their hasty way,
And found the lowly stable-shed
Where the Virgin-Mother lay:
And now they checked their eager tread,
For to the Babe, that at her bosom clung,
A Mother's song the Virgin-Mother sung.

Мне выдает результат

(null) s nomerom 1
(null) s nomerom 2
(null) s nomerom 3
And now they checked their eager tread, s nomerom 4
For to the Babe, that at her bosom clung, s nomerom 5
A Mother's song the Virgin-Mother sung. s nomerom 6

К первым трем строкам вопросов нет. Но почему в дальнейшем начинает перезаписываться lineptr[3]? Ведь в моем случае результат должен выглядеть так

(null) s nomerom 1
(null) s nomerom 2
(null) s nomerom 3
And now they checked their eager tread, s nomerom 4
And now they checked their eager tread, s nomerom 5
And now they checked their eager tread, s nomerom 6

Показать весь текст

13 мар, 14:14 459 1155008

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

Ответы550205502255024

13 мар, 14:29 460 1155020

>>1155008
sleep вернёт ноль, если ты отоспал положенное время и не получил сигнал, и вернёт не ноль, если ты получил сигнал.
Осталось только посылать сигнал. Если воркеры какие-нибудь pthread'ы, то pthread_kill ждуну.

Ответы55050

13 мар, 14:32 461 1155022

>>1155008
Если однопоток, то сначала назначь обработчик SIGALRM, а потом setitimer на время, довольно точно будет. Если придёт, убивай setitimer, ему там надо нулевое время передать.

Ответы55050

13 мар, 14:37 462 1155024

>>1155008
Но самым хорошим решением будет использование select и poll, ибо к сокетам можно применять, ЕМНИП.
Там есть ppoll, например, которая может определённое время ждать изменения состояния сокета.
Если ppoll вернёт ноль, то ничего нового не произошло, а значит можно умирать.
Аналогично с RET от pselect.
Вообще, pselect для тебя несёт более релевантную инфу.

Ответы55050

13 мар, 15:14 463 1155050

>>1155020
>>1155022
>>1155024
Спасибо.

13 мар, 15:53 464 1155087

>>1153642
Стандарт - это описание того как должно быть, реализация - это файлы с кодом, написанные программистами компилятора, чтобы компилятор делал так как написано в стандарте.

36 Кб, 1126x346
13 мар, 18:55 465 1155167

>>1154766
>>1154770
Вот. На скрине у меня return - это адрес который возвратила функция result(). В другой функции где есть DBZdetect всё работает замечательно и передаётся туда тот же адрес, более того, я пробовал сохранять адрес в отдельный указатель и передавать его в качестве аргумента, но тщетно. Я знаю что совсем еблан и ошибка банальна и проста, но почему-то не могу её увидеть.

Ответы5517555316

13 мар, 19:07 466 1155175

>>1155167
А тип у pta->digits[] какой?

Ответы55178

2 Кб, 322x83
13 мар, 19:08 467 1155178

>>1155175
long double

Ответы55182

13 мар, 19:16 468 1155182

>>1155178
Я не видеть, мб другие смогут, давай result

Ответы55196

38 Кб, 696x835
13 мар, 19:37 469 1155196

>>1155182
Говнокод лютый, я согласен. Но здесь видно что ничего особого не происходит. Если нужно, могу поскидывать функции последнего цикла. Но опять же, ранее они ничего не делали криминального и работали как надо.
А может быть такое, что функции которые я вызвал до этого, что-то сделали со стеком и отсюда такие глюки при передачи аргумента в DBZdetect()?

Ответы5520155426

13 мар, 19:49 470 1155201

>>1155196
Ну со стеком это уже писец какой-то.
Я хз, мб result как-то неявно меняет адрес pta.
И этот адрес попадает в Detect

Ответы55204

13 мар, 19:56 471 1155204

>>1155201
Так вот что бы исключить это изменение, как я ранее и писал - создавал отдельный указатель и хранил адрес там. Но при передаче в DBZdetect() адрес переданный неважно каким способом меняется, а затем программа вылетает. Видимо я таки где-то накосячил с другими функциями. Других вариантов, похоже не осталось.

Ответы55211

13 мар, 20:01 472 1155211

>>1155204
Ну и прокинь в голове кучу, если с ней работаешь

13 мар, 22:55 473 1155316

>>1155167
Какой пиздец. Притащи в систему шланг или гцц и собери с -fsanitize=address. Ну или комментируй куски функции result и смотри, где ты проебываешься. Я вижу единственный вариант, при котором адреса будут различаться - это порча указателя pta каким-то образом.

14 мар, 00:28 474 1155376

>1151364
я как-то хотел такую написать, но на что-то переключился и забил. хотел плотно подрочить опции разные, с шедулером разобраться. но, наверно тупой.

14 мар, 01:09 475 1155400

>>1154732
>>1154497
> Пилят индусы из микрософта.
ддк - не запатентованная торговая марка микрософта(с)(тм)(r), есть реализации других разработчиков для других ОС для разных целей, но таки да, чаще всего пилится тупорылыми индусами дл тупорылых индусов.

14 мар, 01:49 476 1155426

>>1155196
ты студентик ведь еще, да?
этож не в продакш код?

Ответы5543455701

14 мар, 02:31 477 1155434

>>1155426
>ты студентик ведь еще, да?
>администратор
нет, ты что.

14 мар, 06:34 478 1155488

>>1154856
>Макроассемблер обоссыт этот конпелятор с 14-го этажа.
вот кстати никогда не понимал что значит макроасемблер - ассемблер от макрософт и/или тот что с макросами? или он кроссассемблер.

щас сижу не могу понять, как к листингу прикрутить С макросы, чтобы просто как-нибудь инклюдить хедер да и всё.

наверно это как-то делают из С компилятора? в конце концов, макропроцессору не пофиг ли? а потом чтобы ассемблер своим препроцессором обработал эти числа как ему надо.

Ответы55527

14 мар, 06:42 479 1155497

хотя необходимость наверно надуманная. просто заделаю хедер и в нём вставлю ассерты - кому надо тот перепишет.

14 мар, 08:54 480 1155527

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

Ответы55531

14 мар, 09:19 481 1155531

>>1155527
это вопрос соединения си кода с ассемблером. например, как туда засунуть смещения в структурах, константы? как-то же люди это делают.

Ответы55535

14 мар, 09:46 482 1155535

>>1155531
>это вопрос соединения си кода с ассемблером
Очевидным тулчейном каким-нибудь.
Только зачем тебе городить такой огород Z80? Основная няшность сишечки в ембедеде это её кроссплатформенность, т.е. при определённом скилле работы с препроцессором можно ебашить говнокод который будет компилироваться на кофемолке и на тостере. Только при этом не забываем, что там будет какая-никакая унификация, куча всяких I/O и почих I2C,а вот тебе это нахуя на Z80 надо? Там же блять адресное пространство в 16 бит, пара десятков команд на ассемблере и примитивная шина управления. Ты больше выебешься прикручивать всё это, а потом плюнешь и в конце концов всё запилишь на макроассемблере или вообще сразу в двоичном коде (:

Ответы55541

14 мар, 10:29 483 1155541

>>1155535
>Очевидным тулчейном каким-нибудь.
не, я понимаю, скомпилировать константный массив с offsetof и перекодировать в синтаксис макросов нужного ассемблера.

ой всё. ещё я макросы левых ассемблеров не изучал. статик ассерт и сойдёт-и-так.

просто никогда не задумывался о таких вещах.

14 мар, 17:50 484 1155701

>>1155426
Я даже не студентик. Я просто решил попробовать программирование ради интереса и моя специальность далеко не связана с точными науками.

Ответы5570455783

14 мар, 17:54 485 1155704

>>1155701
fix Не студентик вуза программ тематики.*

14 мар, 19:44 486 1155783

>>1155701
тогда окей
а то код больно страшненький

Ответы55805

14 мар, 20:55 487 1155805

>>1155783
Чем же?

15 мар, 03:05 488 1155916

Есть мнение одного сеньора, что самая эффективная связка языков программирования нужная для понимая работы компьютеры и созданию приложений, которая только может быть, это Assembler 64x + C + Lua. Могут ли эксперты в данном треде это опровергнуть или подтвердить зеленому студенту?

Ответы5591756024

15 мар, 03:35 489 1155917

>>1155916
почему не лисп тогда? причём самописный.

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

15 мар, 03:36 490 1155918

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

void foo(uint32_t num){
uint16_t num1 = num%10000;
uint16_t num2 = num/10000;
bar(num1);
bar(num2);
}

Так вот, в какой битности происходят арифметические операции uint16_t num1 = num%10000 и uint16_t num2 = num/10000 ? Они происходят в 32 битах и потом кастуются в 16, или компилятор сразу ебошит их в 16 битах и типа срет на то что num у нас 32-битный?

Ответы5591955921

15 мар, 03:39 491 1155919

>>1155918
и как он может срать на это? у тебя бы результат неправильный был бы.

15 мар, 04:13 492 1155921

>>1155918
Почитай про integer promotion rules. Компилятор должен вести себя так, как будто считает в наиболее широком типе из двух операндов (причем минимум в int), поэтому твои вычисления идут в 32 битах, а потом обрезаются до 16 при присваивании. Но фактически компилятор может считать (и считает!) в том, в чем ему удобнее, лишь бы не было расхождений с референсным поведением.

15 мар, 12:26 493 1156024

>>1155916
Так для понимания работы компа нужно начинать с его железа, а перед этим — с математики и физики.

Ответы56025

15 мар, 12:28 494 1156025

>>1156024
Ты предлагаешь ему начать с ТОЭ, пройти схемотехнику, потом ещё дохрена PC-специфик вразнобой читать, шастать по форумам, ибо литературы нет?

Ответы56029

15 мар, 12:49 495 1156029

>>1156025
Железо я бы предпочел изучать по программе какого-нибудь учебного заведения, которое тесно связно с фирмами, проектирующими и производящими компы.

Ответы56030

15 мар, 12:53 496 1156030

>>1156029
Сам бы нашёл с удовольствием такую программу, чтобы потом можно было в СЦ идти работать.

Ответы56040

15 мар, 13:31 497 1156040

>>1156030
>Сам бы нашёл с удовольствием такую программу
>но искать не буду
>и не искал

Ответы56042

15 мар, 13:44 498 1156042

>>1156040
> и не существует в Рахе

15 мар, 16:17 499 1156092

Хей, не подскажитье. Нужно сделать так, чтобы структура ложилась ровно на начало линии кеша. Знаю, что это можно сделать, не подскажите, куда копать?

Ответы5610556414

15 мар, 16:46 500 1156105

>>1156092
крис касперски - техника оптимизации программ.

ПЕРЕКАТ # OP 15 мар, 21:11 501 1156309

ПЕРЕКАТ

>>1156306 (OP)
>>1156306 (OP)
>>1156306 (OP)
>>1156306 (OP)
>>1156306 (OP)

15 мар, 23:37 502 1156414

>>1156092
alignas

Тред утонул или удален.
Это копия, сохраненная 1 мая 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion