作業中のCプロジェクトのファイルctags
を生成するために使用していますが、ファイルに多くの関数がありません。tags
これは、を使用しているためにソースファイル内の不均衡な中括弧が原因であると思われます#ifdef
。(簡略化された)例:
#include <stdio.h>
struct mystruct {
long member;
#ifndef _MSC_VER
}__attribute__ ((packed));
#else /* _MSC_VER */
};
#pragma pack(pop)
#endif /* _MSC_VER */
char* greeting_text(){
return "Hello world\n";
}
int main( int argc, const char* argv[] ){
char * greeting = greeting_text();
printf(greeting);
return 0;
}
これはコンパイルさgcc -Wall
れ、Linuxで問題なく動作します。ただし、を使用して解析するとctags problem.c
、tags
ファイルには次のエントリのみが含まれますmystruct
-関数がありません。
ctags --verbose
レポート:
OPENING problem.c as C language file
problem.c: unexpected closing brace at line 8
problem.c: retrying file with fallback brace matching algorithm
OPENING problem.c as C language file
problem.c: unexpected closing brace at line 8
そのためctags
、ファイル内のプリプロセッサのトリックが気に入らないようです。
これを処理する方法はありctags
ますか?
のマンページでctags
もこの問題について明示的に言及していますが、ctags
これを回避できることを示しています。ただし、これは機能していないようです...
これは、Exuberant Ctags 5.8(Debianパッケージ1:5.8-4)を使用したものです。
編集:
また、これらの種類の構成を処理するctagsの代替案にも興味があります。