Open
Description
I find the definition will not be parsed in the #else
and extern "C"
.
The sample code:
#ifdef __cplusplus
extern "C" {
#endif
#ifdef MAX
void testMax1() {}
#define NB1 11
#else
void testMax2() {}
#define NB2 22
#endif
#ifdef __cplusplus
}
#endif
#ifdef MAX
void testMax3() {}
#define NB3 33
#else
void testMax4() {}
#define NB4 44
#endif
I use following command to parse:
ctags.exe --output-format=json --langmap=c:+.inc --kinds-c=+plz --fields=+nie -o - D:\tmp\test\testIfMacro.c
Result is:
{"_type": "tag", "name": "NB1", "path": "D:\\tmp\\test\\testIfMacro.c", "pattern": "/^ #define NB1 /", "file": true, "line": 7, "kind": "macro", "end": 7}
{"_type": "tag", "name": "NB3", "path": "D:\\tmp\\test\\testIfMacro.c", "pattern": "/^ #define NB3 /", "file": true, "line": 19, "kind": "macro", "end": 19}
{"_type": "tag", "name": "NB4", "path": "D:\\tmp\\test\\testIfMacro.c", "pattern": "/^ #define NB4 /", "file": true, "line": 22, "kind": "macro", "end": 22}
{"_type": "tag", "name": "testMax1", "path": "D:\\tmp\\test\\testIfMacro.c", "pattern": "/^ void testMax1() {}$/", "line": 6, "typeref": "typename:void", "kind": "function", "end": 6}
{"_type": "tag", "name": "testMax3", "path": "D:\\tmp\\test\\testIfMacro.c", "pattern": "/^ void testMax3() {}$/", "line": 18, "typeref": "typename:void", "kind": "function", "end": 18}
{"_type": "tag", "name": "testMax4", "path": "D:\\tmp\\test\\testIfMacro.c", "pattern": "/^ void testMax4() {}$/", "line": 21, "typeref": "typename:void", "kind": "function", "end": 21}
The testMax2
and NB2
are not parsed, while testMax4
and NB4
are parsed.
I thinkextern "C"
will cause this error. Can you support this situation?
Metadata
Metadata
Assignees
Labels
No labels