наверняка многие заметили, что я не равнодушен к препроцессору. но, в последнее время я становлюсь ленивым(старость, наверное)...и хочется препроцессора, чтоб не использовать boost.preprocessor, а можно было бы просто писать:
#ifdef __SUPER_PREPROCESSOR_NAME__
#define my_iterate(seq, proc) \
for i in seq: \
proc(i)
#define my_proc(i) \
if i%2 == 0:
std::cout << i << std::endl;
my_iterate((2)(6)(1)(9), my_proc)
#endif // __SUPER_PREPROCESSOR_NAME__
думается мне, этого можно запросто добиться, и, при этом, не ломая стандартный препроцессорный код.
кто-то встречал сабж?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
вроде как
boost.wave предназначен для сабжа. попробую кое-что расширить...
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>наверняка многие заметили, что я не равнодушен к препроцессору. но, в последнее время я становлюсь ленивым(старость, наверное)...и хочется препроцессора, чтоб не использовать boost.preprocessor, а можно было бы просто писать:
Я для подобного свой на перле писал...
void CMembers::memberAdd()
{
if(DF_REQUEST_IS_POST)
{
DF_STOP_IF_NO_AUTH
DFDB_R newmember = DFDB_Q("new_member", "insert into members ("
"name, "
"password, "
"email, "
"division_id"
") values ($1, $2, $3, $4) returning id",
(postValue("fio"))
(postValue("pw"))
(postValue("email"))
(postValue("division_id")));
int memberID = CMS_SQL_LAST_INSERT_ID(newmember);
DFDB_R creator = DFDB_Q("member_name", "select name from members where id=$1", (DF_SESSION_MEMBER_ID_INT));
updateChangelog(memberID, "member_created",
"Зарегестрирован пользователь <a href='/members/show/" + std::to_string(memberID) + "'>" + postValue("fio") + "</a>");
setMemberRights(std::to_string(memberID), "task", "can_add", true);
response().set_redirect_header("/members/", cppcms::http::response::see_other);
}
else
{
putBaseHeader();
HTML
(
<!++
<panel++ [Добавление пользователя] [ ] [visible] [useradd]>
<f++ memberEditForm(<s++/members/add++s>); ++f>
<++panel>
++!>
);
putBaseFooter();
}
}
Обрабатывает оно у меня код между <!++ и ++!>.
Было дело, да
До сих пор использую