vim - Bagaimana untuk menggunakan ctags untuk menghasilkan teg untuk fail pengepala glibc?
世界只因有你
世界只因有你 2017-05-16 16:42:46
0
2
677

apa yang saya mahu:

Saya mahu menggunakan fungsi omnicompletion atau omniccompletion dalam vim untuk merealisasikan penyiapan automatik fungsi glibc Contohnya, masukkan pri dalam fail sumber C, dan kemudian tekan C-x C-o untuk muncul senarai untuk melengkapkan printf, dan seterusnya.
Masalahnya sekarang ialah saya menggunakan ctags untuk memproses fail pengepala C standard yang dipasang oleh glibc-headers-2.15-57.fc17.i686 dan menjana fail tags_glibc. Tetapi masukkan pri dalam fail sumber C, dan kemudian C-x C-o Dalam menu pop timbul, terdapat hanya definisi dan prototaip perisytiharan printf dalam stdio2.h, tetapi bukan perisytiharan printf stdio.h. Apa yang pelik ialah saya menggunakan vim untuk melihat fail tag yang dijana, mencari printf, dan menemui tiga entri berikut:

printf	/usr/include/bits/stdio2.h	/^printf (__const char *__restrict __fmt, ...)$/;"	f
printf	/usr/include/bits/stdio2.h	108;"	d
printf	/usr/include/stdio.h	/^extern int printf (__const char *__restrict __format, ...);$/;"	p

Yang terakhir menunjukkan bahawa ctags menjana perisytiharan prototaip (jenis p) printf dalam stdio.h, tetapi mengapa saya tidak dapat melihat yang ketiga apabila saya memasuki pri<C-x C-o> Di mana salah saya? ?
Fenomena yang sama juga berlaku dalam fungsi seperti fprintf (simbol ini tersedia dalam stdio.h dan stdio2.h), memcpy (tersedia dalam string.h dan string3.h).

Persekitaran

Sistem saya ialah fedora17 (3.6.3-1.fc17.i686), ctags ialah versi terkini, 5.8
Perintah ctags yang digunakan adalah seperti berikut:

ctags --langmap=c:.c.h --language-force=c -h .h --c-kinds=+pxl  --exclude='tags*' --exclude='*swp' --exclude='*~' --exclude='*[!ch]' -I _THROW -I __attribute__+ -I __wur -f tags_glibc -L glibc-headers-filelist.txt 

Antaranya, penjanaan glibc-headers-filelist.txt ialah arahan berikut:

rpm -ql glibc-headers |grep '\.h' >glibc-headers-filelist.txt

Soalan

Pakar vim yang dihormati, adakah terdapat cara untuk menjana fail tag bagi fail pengepala glibc dengan lebih baik?

世界只因有你
世界只因有你

membalas semua(2)
滿天的星座

-e
Sertakan tag luaran. ctags biasanya akan mengabaikan pengisytiharan extern fungsi atau pembolehubah; itu berguna apabila menjana teg untuk program anda sendiri. Fail tag untuk pengisytiharan luaran dalam fail pengepala standard sistem boleh menjadi sumber yang sangat berguna, jadi bendera -e ini telah dibuat.

Dari http://elvis.the-little-red-haired-gi...

为情所困

Apabila menggunakan fail tag, anda perlu membuka vim dalam direktori tempat tag berada.

Apabila menggunakan direktori yang berbeza, anda perlu menetapkan pembolehubah teg dalam vim dan nilai pembolehubah ialah laluan fail teg. Contohnya:

:set tags=....../tags_glibc
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!