我正在使用类型宏m := MyMy{[]interface{}{int64(1234), "strval", 32.2}}
key, err := datastore.Put(c, datastore.NewIncompleteKey(c, "MyMy", nil), &m)
,它会扩展为动态类型[list(type)
],如下所示:
主要摘要
list_of_type
问题
doxygen错误地将此类型[
... #define list(type) force_append_macro(list_of_,type) ... typedef struct _improperlydocumented { list(char_ptr) *words; }improperlydocumented; ...
]呈现为 公共成员函数(而不是成员数据)。
环境信息
list(char_ptr)
doxygen向导生成以下输出:
我的代码/配置:
doxygen.config
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
$ doxygen --version
1.8.6
注意:我尝试设置PROJECT_NAME = "doxytest"
OUTPUT_DIRECTORY = ./build/docs
OPTIMIZE_OUTPUT_FOR_C = YES
TYPEDEF_HIDES_STRUCT = YES
HIDE_SCOPE_NAMES = YES
SHOW_NAMESPACES = NO
INPUT = ./
FILE_PATTERNS = *.h *.c
GENERATE_HTML = YES
GENERATE_LATEX = NO
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
;输出与以下相同..
list.h
EXPAND_AS_DEFINED = list
doxygen输出
不正确地记录结构参考
#include< list.h>
公共成员职能
#ifndef __list__ #define __list__ typedef struct { int capacity, count, objsize, xprate; void *data; }glist_t; /* allow list types to be defined (as wrappers around generic_list) */ #define append_macro(a,b) a ## b #define force_append_macro(a,b) append_macro(a,b) #define declare_named_list_type(name,type) typedef union\ {struct force_append_macro(_template_,name)\ {\ int capacity,\ count,\ objsize,\ xprate;\ type *data;\ }template;\ glist_t ls;\ }name #define declare_list_type(type) declare_named_list_type(force_append_macro(list_of_,type),type) #define list(type) force_append_macro(list_of_,type) typedef char * char_ptr; declare_list_type(char_ptr); /*! * This object is improperly documented. * * Issue is that the list(char_ptr) is treated as a member function instead of a type.. */ typedef struct _improperlydocumented { list(char_ptr) *words; }improperlydocumented; #endif
详细说明
此对象记录不正确。
问题是列表(char_ptr)被视为成员函数 而不是类型..
问题
如何将doxygen输出修复为文档list (char_ptr)*words
作为成员数据(不是公共成员函数)?
<小时/> 配置尝试次数
words
**尝试了YES和NO,所有其他设置都相同(不包括星号;)
PROJECT_NAME = "doxytest"
OUTPUT_DIRECTORY = ./build/docs
OPTIMIZE_OUTPUT_FOR_C = YES
TYPEDEF_HIDES_STRUCT = YES
HIDE_SCOPE_NAMES = YES
SHOW_NAMESPACES = NO
INPUT = ./
FILE_PATTERNS = *.h *.c
GENERATE_HTML = YES
GENERATE_LATEX = NO
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES|NO **
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED = list
仍然没有正确扩展列表(char_ptr)。没有产出变化
我试图通过复制+粘贴config和list.h文件来复制Windows上的工作场景(下面讨论):
答案 0 :(得分:0)
来自Doxygen文档
EXPAND_ONLY_PREDEF
如果EXPAND_ONLY_PREDEF和MACRO_EXPANSION标记都设置为YES,则宏扩展仅限于指定的宏 PREDEFINED和EXPAND_AS_DEFINED标签。
默认值为:NO。
此标记要求将标记ENABLE_PREPROCESSING设置为YES。
EXPAND_AS_DEFINED
如果MACRO_EXPANSION和EXPAND_ONLY_PREDEF标记设置为YES,则此标记可用于指定应该应该包含的宏名称列表 扩大。在源中找到的宏定义将是 用过的。如果要使用其他宏,请使用PREDEFINED标记 定义否决了源代码中的定义。
此标记要求将标记ENABLE_PREPROCESSING设置为YES。
因此,EXPAND_AS_DEFINED选项仅在MACRO_EXPANSION选项指定为yes
(不是)时才有效。
因此,只需将MACRO_EXPANSION
指定为yes
,然后将list
添加到EXPAND_AS_DEFINED
。这将解决您的问题。
修改强>
使用Doxygen 1.8.5,1.8.6和1.8.9.1(在Win7下)测试了以下配置(仅相关选项):
PROJECT_NAME = "doxytest"
OUTPUT_DIRECTORY = ./
OPTIMIZE_OUTPUT_FOR_C = YES
TYPEDEF_HIDES_STRUCT = YES
HIDE_SCOPE_NAMES = YES
SHOW_NAMESPACES = NO
INPUT = ./
FILE_PATTERNS = *.h *.c
GENERATE_HTML = YES
GENERATE_LATEX = NO
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
其他选项保留为默认值。
生成的输出为:
不正确地记录结构参考
#include <list.h>
公共成员职能
list_of_char_ptr* words
详细说明
此对象记录不正确。
问题是列表(char_ptr)被视为成员函数 而不是类型..