C言語のタグジャンプの仕方は?No.18268
KojiMatsui さん 04/11/04 15:32
 
Matsuiと申します。宜しくお願い致します。


Win2kで秀丸エディタ4.06を使用しています。
C言語のソースファイル内で出てきた関数・構造体の宣言や変数型が何なのか直ぐわ
かるようにタグジャンプできるように設定したく思っています。


C:\cygwin\bin下に
gcc.exeやg++.exeがあります。

C:\cygwin\usr\include下に
C/C++言語、ヘッダファイル等もろもろが収納されています。

C:\cygwin\home\root\hoge\srccygwin\src\src下に自作の.cファイルを置いていま
す。そして、

[その他(O)]

[tagsファイルの作成(G)]

"対象ファイル(N)"…C:\cygwin\usr\include\*.*
"ルール(R)"…C言語の関数一覧
"出力ファイル名"…C:\cygwin\usr\include\tags
"サブファイルも検索)(S)"…on
"ファイル名をフルパスで出力(F)"…on

[OK]

"対象ファイル(N)"…C:\cygwin\home\root\hoge\srccygwin\src\src\*.*
"ルール(R)"…C言語の関数一覧
"出力ファイル名"…C:\cygwin\home\root\hoge\srccygwin\src\src\tags
"サブファイルも検索)(S)"…on
"ファイル名をフルパスで出力(F)"…on

[OK]

と2つのtagsファイルを作成して、

[動作環境(E)]のtagsファイル(T)下で
C:\cygwin\usr\include\tags C:\cygwin\home\root\hoge\srccygwin\src\src\tags
を記入しました。
上の階層もチェックする(R)…off
関数名のみをジャンプの対象とする(C)…off

としました。
この時点で「"ルール(R)"…C言語の関数一覧」は間違っていないでしょうか?

その後、試しに自作ファイルmain.cにて
(このファイルは「$ gcc -o sever server.c -lcurses」でちゃんとコンパイル出来
ました)
「memset」をマウスで反転表示してCtrl+F10でタグジャンプできましたが
「sockaddr_in」
(実際にこの構造体は/usr/include/bits/sockaddr.hにある)

「listen」
(実際にこの関数は/usr/include/sys/socket.hにある)
では
「tagsファイル内にその関数または強調行が見つかりませんでした。」
となってしまいます。
何か設定を間違っていますでしょうか???



#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/types.h>
#include <curses.h>
#include <signal.h>
#include <unistd.h>

struct sockaddr_in me;

memset((char *)&me, 0, sizeof(me));

listen(soc_waiting,1);


[ ]
RE:18268 C言語のタグジャンプの仕方は?No.18270
秀丸担当 さん 04/11/04 16:09
 

>[動作環境(E)]のtagsファイル(T)下で
>C:\cygwin\usr\include\tags C:\cygwin\home\root\hoge\srccygwin\src\src\tags
>を記入しました。

ここに複数のファイルを指定する場合、""でくくって、;で区切ってください。
"C:\cygwin\usr\include\tags";"C:\cygwin\home\root\hoge\srccygwin\src\src
\tags"
となります。

>としました。
>この時点で「"ルール(R)"…C言語の関数一覧」は間違っていないでしょうか?

ヘッダファイルに対してtagsファイルを作成する場合、ルールがC言語の関数一
覧ではダメです。
ヘッダファイルの関数のプロトタイプ宣言を行の強調表示するhilightファイル
を指定する必要があります。
そういったhilightファイルは無いので、自分で作成する必要があります。
付属のC-header.hilightは、構造体の宣言を強調しているだけで、対応していま
せん。

あるいは、grepの出力もtagsファイルとして使うことができるはずです。
grepで、関数のプロトタイプ宣言がひっかかるようにして、その出力をC:
\cygwin\usr\include\tagsとして保存しておくと、同様のことになります。

[ ]