При использовании GCC можно сделать функцию weak
. Они может быть переопределен неслабыми функциями:
test.c:
#include
__attribute__((weak)) void test(void) {
printf("not overridden!\n");
}
int main() {
test();
}
, Что это делает?
$ gcc test.c
$ ./a.out
not overridden!
test1.c:
#include
void test(void) {
printf("overridden!\n");
}
, Что это делает?
$ gcc test1.c test.c
$ ./a.out
overridden!
К сожалению, который не будет работать на другие компиляторы. Но у Вас могут быть слабые объявления, которые содержат переопределяемые функции в их собственном файле, помещая просто включение в файлы реализации API, если Вы компилируете использование GCC:
weakdecls.h:
__attribute__((weak)) void test(void);
... other weak function declarations ...
functions.c:
/* for GCC, these will become weak definitions */
#ifdef __GNUC__
#include "weakdecls.h"
#endif
void test(void) {
...
}
... other functions ...
Оборотная сторона этого - то, что это не работает полностью , не делая чего-то в файлы API (нуждающийся в тех трех строках и weakdecls). Но как только Вы сделали то изменение, функции могут быть переопределены легко путем записи глобального определения в одном файле и соединения этого в.
Посмотрите сайты, использующие jekyll . Есть несколько кастомных форков, в которых реализована функция тегов, надеюсь, также так, как вы хотите: -)
У меня был тот же вопрос, и я наткнулся на это: http://gist.github.com/143571.
Это задача rake, которая генерирует список тегов. Я немного изменил его, и моя версия находится по адресу: http://github.com/mattfoster/mattfoster.github.com/blob/master/Rakefile.
Хотя это и не дает вам страницу для каждого тега, вы можете использовать якоря, что уже полдела!