[vim] Копирование в командную строку
Можно ли скопировать выделенный текст в командную строку vim?
Например, если искать текст во всех файлах, приходится набирать его после :grep, должен быть способ проще.
Можно ли скопировать выделенный текст в командную строку vim?
Например, если искать текст во всех файлах, приходится набирать его после :grep, должен быть способ проще.
Есть абстрактный тип:
typedef int (*FruitID)(Fruit);
typedef struct _Fruit {
int type;
FruitID id;
} *Fruit;
typedef struct _Apple {
struct _Fruit base;
} *Apple;
int apple_id(Apple a)
{
return 1;
}
Apple apple_new(void)
{
Apple a = (Apple)malloc(sizeof(struct _Apple));
a->base.type = 1;
a->base.id = (FruitID)apple_id;
return a;
}
int fruit_id_virt(Fruit f)
{
return f->id(f);
}
int fruit_id_nonvirt(Fruit f)
{
switch(f->type) {
case 1:
return apple_id((Apple)f);
case 2:
return orange_id((Orange)f);
}
return 0;
}
Fruit a = (Fruit)apple_new();
Fruit o = (Fruit)orange_new();
for(i = 0; i != 0xFFFFFFF; ++i)
#ifdef VIRT
sum += fruit_id_virt(a) + fruit_id_virt(o);
#else
sum += fruit_id_nonvirt(a) + fruit_id_nonvirt(o);
#endif
с fruit_id_virt: 0m9.644s
c fruit_id_nonvirt: 0m4.849s
ЧЯДНТ, отчего такое падение скорости? Как вызов по указателю может быть медленнее цепочки сравнений? Я уже хотел немного избавиться от if/switch в своем коде (как-то и эстетичнее оно), а тут такое...
Пишу библиотеку, использую automake. Вместе с ним настоятельно рекомендуют использовать libtool, но мне эта вещь совсем не понравилась. Есть ли причины пользоваться ей в 2010 году?
Кажется, все, что дает libtool - это поддержка всех существующих платформ, из которых большинство уже умерло, а оставшиеся пришли к более-менее единому стандарту. По крайней мере, на linux и *BSD сборка делается одной и той же командой.
А если отказаться от libtool, то как быть с automake? Достаточно ли добавить в Makefile.am
libmx.so : expr.c var.c func.c module.c list.c
$(CC) -I.. -fpic -shared -o $@ $^
(Вопрос только по autotools, предполагается, что они нужны ))
Имеется архив с функцией-конструктором, вызываемой перед main.
void init() __attribute__((constructor));
Если вызвать ее явно, то вызовется также и перед main.
Если линковать с объектным файлом, то тоже все нормально.
Как вытащить init из архива без явного вызова?
Глобальные переменные по умолчанию инициализируются нулем, т. е. объявления
int i;
int j = 0;
.bss
j:
.zero 4
.comm i, 4, 4
На сервере есть программка, которая должна запускаться по запросу клиента, делать нужное действие и сразу завершаться. Обмена данными на этом уровне можно избежать. Как лучше реализовать такое, не писать же собственный сервер?
← назад |