Чтобы считаться совместимым, исходный указатель должен быть константой на сразу предшествующем косвенном уровне. Так, это даст Вам предупреждение в GCC:
char **a;
const char* const* b = a;
, Но это не будет:
const char **a;
const char* const* b = a;
, С другой стороны, можно бросить его:
char **a;
const char* const* b = (const char **)a;
Вам был бы нужен тот же бросок для вызова функции f (), как Вы упомянули. Насколько я знаю, нет никакого способа сделать неявное преобразование в этом случае (кроме C++).
Я использую:
set tags=~/.tags
set tags+=~/.vim/tags/cpp
set tags+=~/src/git/gitsrc/tags
" and so on...
Для генерации тегов в корне конкретного проекта:
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
Я адаптировал эту настройку из подсказки vim для завершения кода C ++ .
Всегда ли файл тегов находится в каталоге проекта /? Если это так, вам не нужно «искать», чтобы найти файл тегов. Просто запрограммируйте путь к обоим файлам следующим образом:
set tags=/home/you/projects/foo/tags;/home/you/some/arbitrary/path/tags
Если нет, вы можете попробовать что-то вроде этого:
set tags=/home/you/projects/**;/home/you/projects,/home/you/some/arbitrary/path/tags
Я не пробовал это, поэтому вам, возможно, придется поэкспериментировать. Есть некоторые предварительные условия для его работы. См .: справка по поиску файлов.
Ваша первая опция «установить теги» работает для меня в Linux. (То есть, я делал это раньше и просто воссоздал, чтобы быть уверенным.) Вы можете указать много разных путей в параметрах тегов, как абсолютных, так и относительных. Однако во втором случае в середине списка стоит точка с запятой, что неверно. На самом деле, вам не нужна точка с запятой. Я бы также заменил ~ на абсолютный путь к вашему дому, на всякий случай, и удалил точки с запятой все вместе. Просто ставьте запятые между путями.
О, и для поиска в каталоге файла тегов вам потребуется "../tags", а не "./tags". Одиночная точка означает текущий каталог, две точки означают каталог, находящийся наверху от того места, где вы находитесь.