- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
/*
Build me with
gcc -lm -o binary binary.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (int argc, char * argv[]) {
if (argc <2) {printf("\nUsage: %s 234\n\n", argv[0]); exit(1);};
int in = atoi(argv[1]);
int size,a,b,c,d,e;
size=floor(log2(in))+1;
char mass[size];
for(b=0;b<=size;b++) { mass[b]=0; }
d=size;
for(a=in;a>0;a--) { if (mass[d]==1){ for(e=size;e>=0;e--){ if (mass[e]==0) {mass[e]=1; break;} else mass[e]=0;continue;}}
else {mass[d]=1;d=size;}}
for(c=1;c<=size;c++)
{printf("%i",mass[c]);}
printf("\n");
return 0;
}
Кажется мы нашли идеальную билд систему.
Как собирает программы продвинутый программист: круглые сутки пердолится со системами сборки, выясняя, какая из них соснула больше.
Ещё есть режим «build» (если из командной строки, то bpc -B), в котором компилируется вообще всё.
У «Watcom C» есть какой-то костыль для аналогичного поведения. Там есть #pragma, которая в obj-файл вставляет комментарий со списком библиотек, которые нужно прилинковать, и есть встроенный в компилятор генератор зависимостей (высирает что-то похожее на то, как в мейкфайле описываются зависимости). Но всё равно это слабее, чем модульная система «Борланд Паскаля».
Модульность придумали в «Борланде» (её сделали по образу модульности «Модулы-2» или языка «Ада», но только с другими ключевыми словами). Все реализации «Object Pascal» («Turbo Pascal» >= 4.0, «Delphi», «Free Pascal», «Oxygene», «PascalABC.NET») поддерживают автоматическую сборку из коробки.
Как работает сборка в «gpc» в режиме совместимости с «Object Pascal», я не помню. Его перестали поддерживать, поэтому чтобы проверить, придётся его самого компилировать.
ЧЗХ?
https://www.elementscompiler.com/elements/oxygene/default.aspx
Это ж не джава какая-нибудь... Перепиши хедер на паскаль да линкуйся или грузи dll.
https://www.freepascal.org/docs-html/current/ref/refse95.html
Вроде и Delphi XE умеет, надо гуглить.
http://docwiki.embarcadero.com/RADStudio/Rio/en/Procedures_and_Functions_%28Delphi%29#Ex ternal_Declarations
А вот статья про обратную линковку:
http://docwiki.embarcadero.com/RADStudio/Rio/en/Writing_C%2B%2B-friendly_Delphi_Code
P.S. Да, в Delphi нужно распаковывать библиотеку (.lib, .a) и перечислять obj-файлы по одному:
http://docwiki.embarcadero.com/RADStudio/Rio/en/Link_object_file_%28Delphi%29
А Free Pascal уже умеет затягивать целую библиотеку одной строчкой.
В Delphi есть тип PChar, который совместим с сишным char * один-в-один. Есть даже PWideChar, который совместим с wchar *. Есть функции для преобразования строк.
Так что если нужно дёрнуть сишную функцию, то придётся завести переменную типа PChar, отфильтровать строку от нулей и преобразовать паскалевскую строку в сишную.
https://www.php.net/manual/ru/internals2.structure.php
А чтобы работало, придётся делать DLL-обёртку, которая будет расшифровывать пришедшую строку $x (программе rundll32 можно передать только одну строку) и дёргать функции уже из нужных DLL.
*****
Оказывается, ещё можно так:
https://www.php.net/manual/ru/class.dotnet.php
И ещё можно дёргать COM-объекты:
https://www.php.net/manual/ru/class.com.php
Есть «Phalanger» –— компилятор «PHP» в байткод для дотнета.
The project was started at Charles University and is supported by Microsoft. Phalanger was discontinued in favor of the more modern PeachPie compiler, which utilizes the Roslyn API.
P.S. «Wordpress» и «Mediawiki» уже скомпилировали этим «PeachPie»:
https://github.com/iolevel
https://www.php.net/manual/ru/ffi.examples-basic.php
https://wiki.freepascal.org/H2Pas/ru
Какой-то клингонский
idl — это interface definition language:
https://ru.wikipedia.org/wiki/Язык_описания_интерфейсов
Компания «Microsoft» использовала idl для описания какой-то хрени, связанной с OLE, RPC и COM (да, снова клингонский, но в «Windows» без этого никуда).
У меня тут уже Ктулху лезет в окно, пойду за секаторами.
Ты ж всё равно без XCode далеко не уедешь, чем бы ты там рядом не пользовался. Яббл очень хитрожопый и анальных ограждений расставил не меньше Майков.
Я не думаю, что в 2006 Дельфинятне нужна была Студия, чтобы сделать приложение под винду.
Надо завтра ради интереса посмотреть, когда появился AppCode, когда XCode стал бесплатным и когда в нём появился llvm
Да, в «Java» связь с остальным миром только через JNI. И в «Андроиде» тоже (даже название то же), хотя в «Андроиде» нет «Java».
Только это всё как в анекдоте про самолёт с бассейном и стадионом: «А теперь мы с этим говном попытаемся взлететь».
Более того, начиная с какой-то версии Delphi (с третьей что ли) сделали и обратную линковку: компилятор может высирать obj-файл, чтобы его можно было использовать в сишной программе (даже есть ключ для манглинга имён и генерации хедера, чтобы его можно было использовать совместно с C++). Правда, в последнем случае поддерживается только борландовский «Билдер», ибо стандарта на манглинг нет.
В «C» нет никакого «манглинга», именно поэтому я за «C».
Дык дотнет стал адекватным где-то в районе 2005 студии. До этого он был унылой пародией на джаву.
А в паскале и несколько работали по зависимостям, насколько я помню.
Никак, лол. Это же просто чтобы триггерить пересборку если хедера поменялись.
Кстати, есть вообще простой способ - gcc при сборке файла умеет высирать в отдельный файл список хедеров, которые он поюзал. Даже тулы не нужны.
Вот сейчас передо мной разобранная светодиодная лампа, в ней выпрямитель (микросборка из четырёх диодов в одном корпусе), за которой мультивибратор на микросхеме и ультразвуковой трансформатор на ферритовом сердечнике. Она не пищит и мерцания не видно, если машешь рукой.
А ещё у меня есть лампа на линейных светодиодах («филаментная», «COG» = «crystall-on-glass»), имитирующих нить накаливания. Там преобразователя нет, просто дофига светодиодов, соединённых последовательно в гирлянду. Она противно трещит при работе. И там мерцание заметно, если помахать.
Ещё у меня лежит разобранная на 8,5 ватта. 13 светодиодов (да, некруглое число) и опять же преобразователь напряжения.
Кстати, ты за целую лампу брался или уже со сгоревшими диодами?
Рот ты себе так расхуяришь.
Вот зачем кот лижет яйца?
Сём, посмотри в зеркало... Ты "на другой стороне", все дела. Но симптомы то те же. С кем боролся - тем и стал. Завязывай уже с этой хуйнёй, пока мозги ещё работают.
Кому на «Говнокоде» пичот? Ну кроме тебя, разумеется.
> мозги ещё работают
Беру свои слова обратно. Читать, не домысливая всякую хрень между строк, ты уже разучился. Да и писать что-то кроме шаблонных фраз - тоже.
З.Ы. Вангую, что сейчас ты в очередной раз скинешь копипасту про "правила общения с ватниками".
Иногда мне хочеться из-за тебя гостя кинуть в игнор.
А у нас есть печеньки фильтрация комментов произвольным js.
Программист 1С (разработчик)
от 200 000 руб.
Ахаха, прыщепердолик!
Не надо искать фаек там, где их нет
JS - JSON, 1C - 1CON: https://govnokod.ru/11981
В центре содержания беженцев в немецкой Баварии несколько десятков постояльцев устроили бунт. Об этом сообщает Frankfurter Allgemeine Zeitung.
По информации газеты, в пятницу, 31 мая, около 30 беженцев начали оскорблять работников центра и приставать к ним, из-за чего руководству пришлось вызвать полицию. Прибыв на место, стражи порядка задержали предполагаемого организатора бунта, однако это лишь разозлило смутьянов: они начали бросаться на полицейских и кидать в них велосипеды. Те в ответ применили слезоточивый газ. По сообщениям издания, дошло до того, что восставшие стали сооружать баррикады, чтобы не дать полицейским отступить, — однако ситуацию спасло прибытие подкрепления.
https://lenta.ru/news/2019/06/01/bund_bld/