- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
XmlWriter<xhtml11::XHtmlDocument>(stream)
<html
<head
<title
<"Hello world!"
>title
>head
<body
<p
<"Some nice paragraph text."
>p
<img(src="http://example.com/hello.jpg",alt="Hello")>img
>body
>html;
кресты в квадрате. любителям темплейтов посвящается.
http://www.vandenoever.info/blog/2015/07/05/literal-xml-in-c++.html
Creating and processing XML feels awkward in most programming languages. With Blasien, a tiny C++11 header library, XML in C++ feels easy and natural. As an extra the XML that is written is mostly validated at compile time.
Her 06.07.2015 16:56 # 0
Qwertiy 07.07.2015 11:43 # +2
Dummy00001 07.07.2015 11:48 # +2
меня уже даже не удивит если кто на темплейтах/операторах/этц интерпретатор перла напишет...
TarasB 07.07.2015 12:55 # +3
Смотрю на стандарт ++14 и жду не дождусь 2014 года... ОЧЁРТ
Qwertiy 07.07.2015 22:59 # 0
bormand 06.07.2015 17:01 # +1
Dummy00001 06.07.2015 17:14 # 0
из всех извратных (полезных) извратов что видел, это наверное самый извратный.
guest 07.07.2015 00:36 # 0
lesmugfrog 07.07.2015 09:41 # 0
Dummy00001 07.07.2015 10:55 # 0
defecate-plusplus 07.07.2015 13:11 # 0
http://www.boost.org/doc/libs/1_58_0/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html
Dummy00001 07.07.2015 13:21 # 0
но идея сама по себе интересная - перегружеными операторами дерево синтакса строить.
guest 21.01.2017 22:43 # 0
3_14dar 07.07.2015 13:40 # −5
Dummy00001 07.07.2015 18:42 # 0
bormand 07.07.2015 18:58 # 0
kegdan 07.07.2015 20:28 # +1
guest 07.07.2015 20:31 # −1
guesto 26.07.2016 05:27 # 0
3_14dar 07.07.2015 19:15 # −4
Dummy00001 08.07.2015 13:17 # +3
3_14dar 09.07.2015 09:10 # −1
bormand 09.07.2015 10:56 # +4
guest 03.03.2017 05:45 # 0
someone 10.07.2015 09:50 # 0
kegdan 10.07.2015 10:25 # −1
Pacefist 10.07.2015 13:43 # 0
gost 25.07.2016 14:50 # +4
А что, так можно было? О_о
bormand 25.07.2016 18:50 # 0
1024-- 25.07.2016 19:29 # 0
Интересно, а можно ли как-то извернуться и вогнать туда произвольные атрибуты, используя наиболее короткую запись.
Приближения, которые приходят в голову:
1. Конструктор от строки: запись $("src")="...", $("alt")="...." - 5 лишних символов на параметр
2. Шаблонная использовать строки как отдельный параметр: "src", "...", "alt", "..." - 2 лишних символов на параметр + нельзя "="
3. Макрос, который делает # своим нечётным аргументам: запись src, "...", alt, "..." - нельзя "="
1024-- 25.07.2016 19:44 # 0
bormand 25.07.2016 21:37 # +6
inkanus-gray 25.07.2016 22:55 # +7
roman-kashitsyn 25.07.2016 23:10 # +3
inkanus-gray 25.07.2016 23:11 # +2
barop 22.01.2017 01:29 # 0
капитан в треде
guestinho 26.07.2016 00:41 # 0
perforce чтоль?
guestinho 21.01.2017 23:55 # 0
Оператор запятая возвращает правый аргумент. Оператор присваивания возвращает const char* (goatse). Но функция ничего не принимает!
inkanus-gray 22.01.2017 00:08 # 0
Рассказать в деталях, как оно работает, или оставить в качестве домашнего задания?
Подсказка: при соглашении cdecl стек чистится вызывающим кодом.
guestinho 22.01.2017 18:53 # 0
Dummy00001 22.01.2017 19:09 # +5
huesto 23.01.2017 21:50 # +1
теперь понятно
barop 23.01.2017 21:58 # +3
Всё было на совести программиста, компилятор ничего не проверял.
Просто писали foo() и всё.
Когда ввели возможность указывать аргументы, то ради обратной совместимости сделали так:
1) foo() -- НЕИЗВЕСТНО какое аргументы (комплиятор может не проверять)
2) foo(void) --аргов точно нет.
Мне кажется это написано в книжечке Кернигана и Ричи. Такая тонкая книжка по основам сей, достаточно годная.
1024-- 23.01.2017 22:04 # 0
barop 23.01.2017 22:07 # +2
собственно, ворнинги были еще в борланд си 1993го года:) (правда там был ключик "ANSI C" или "K&C", и вот в ANSI C были варнинги)
Ну вот вижалси до сих пор компилирует, но пишет ворнинги
https://msdn.microsoft.com/en-us/library/efx873ys.aspx
зы: может быть и напорица на что-то, я никогда не поддерживал код, написанный до 1989го года (или когда там вышли анси си)
huesto 23.01.2017 22:37 # 0
barop 23.01.2017 22:39 # +2
Обладая этим знанием можно его получить.
Еще есть va_arg, но я не знаю будет-ли он тут работать.
Но Борманд не получал аргументов, он юзал глобальные переменные
huesto 23.01.2017 22:43 # 0
barop 23.01.2017 22:45 # +2
Ты хочешь сделать функцию с переменным числом аргументов?
Ну так юзай va_arg, только делай это явно, и будет тебе щастье.
Си нужен чтобы переносить низкоуровневый шлак между платформами (особенно между процессорами), ну и писать на нём всё таки проще, чем на асме.
huesto 23.01.2017 22:52 # +3
barop 23.01.2017 22:56 # +3
В дефинишене можно было указывать параметры, в декларейшене было не обязательно.
причем в дефинишене они писались немного не так.
Так что обращаться можно было очень просто. Просто комплятор не проверял что ты туда передаешь. Ты мог сказать kokoko("foo") и получить туда адрес
huesto 23.01.2017 23:10 # 0
inkanus-gray 24.01.2017 00:27 # +1
Dummy00001 24.01.2017 01:35 # +4
barop 23.01.2017 00:54 # 0
функция без аргументов это void img(void)
а раз не указано, то пофиг скока передавать
barop 22.01.2017 01:16 # 0
Чай не груви, не руби, и не котлин