跳转至

开发辅助工具

gperf

https://www.gnu.org/software/gperf/#TOCintroduction

GNU gperf是一个完美的hash函数生成器。对于给定的一列字符串,它可以生成一个hash函数和hash表,以C或C++的形式。对于输入的字符串可以依赖这个hash函数和hash表进行查找。这个hash函数是“完美”的,意思是:hash表是无冲突的,并且hash表的查找只需要一次简单的字符串比较。

例子

via: https://www.cnblogs.com/274914765qq/p/4589218.html

%{
    /* C code that goes verbatim in output */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
%}
    struct tl{ const char* name ; const char s2;};
%%
"--name",'n'
"--love",'l'
%%

int main(int argc,char **argv)
{
    const struct tl * str2;
    int i;
    char *test;

    for(i=1; i<argc; i++)
    {

        if((str2 = in_word_set(argv[i],strlen(argv[i]))) != 0)
        {
            switch (str2->s2)
            {
                case 'n':
                    test=argv[i+1];
                    printf("My name is %s.\n",test);
                    i++;
                    break;
                case 'l':
                    printf("successed !\n");
                    break;
            }
        }
    }

    return 0;
}

用法:

$ gperf -t -L C example.gperf > example.c
$ gcc -o example example.c
$ ./example --name hello