Apache 模块创建教程包含有错误的代码。怎么修?

Apache module creation tutorial contains code with errors. How to fix?

我访问了以下 URL 以获取有关构建 apache 模块的说明:

https://httpd.apache.org/docs/2.4/developer/modguide.html

它在页面的中途指出自定义模块需要类似于以下的代码来处理 apache 配置文件中的条目:

static const command_rec example_directives[] =
{
    AP_INIT_TAKE1("exampleEnabled", example_set_enabled, NULL, RSRC_CONF, "Enable or disable mod_example"),
    AP_INIT_TAKE1("examplePath", example_set_path, NULL, RSRC_CONF, "The path to whatever"),
    AP_INIT_TAKE2("exampleAction", example_set_action, NULL, RSRC_CONF, "Special action value!"),
    { NULL }
};

它在没有 gcc 选项的 apxs 下编译得很好。它不会在启用扩展错误检查的情况下进行编译。例如,我发出了这个命令:

apxs -i -a -Wc,Werror -Wc,-Wall -Wc,-Wextra -Wc,-O2 -c ./sample.c --enable-debug=YES

尝试执行 gcc -Wall -Wextra -O2 sample.c 而我收到的错误是:

./sample.c:178: warning: missing initializer
./sample.c:178: warning: (near initialization for 'example_directives[4].func')

错误的行指向只包含{ NULL }的行。

apache 模块教程还建议我们使用程序员很少使用的带有参数的函数。因此,我一直收到这些警告:

warning: unused parameter

如何在启用扩展错误检查的情况下修复所有这些错误?

gcc 显然希望您初始化结构的所有成员。尝试用 { NULL, { NULL }, NULL, 0, 0, NULL } 替换最后一个条目。这些值应该匹配通常在 /usr/include/httpd/http_config.h

中找到的 command_rec 结构定义