Emacs 24.2,Cedet 1.1,Windows 7
Visual Studio 10.0 包含目录
(添加到列表'加载路径“〜/.emacs.d/cedet-1.1/common”) (加载文件“~/.emacs.d/cedet-1.1/common/cedet.el”) (语义加载启用过多代码助手) (语义加载启用语义调试助手) (需要“语义装饰包含”) (需要“语义-ia”) (全局 ede 模式为零) (setq 模式本地 c 模式 semanticdb-find-default-throttle '(项目本地卸载系统递归)) (setq-mode-local c++-mode semanticdb-find-default-throttle '(项目本地卸载系统递归)) (语义添加系统包含“C:/Program Files/Microsoft Visual Studio 10.0/VS/Include”'c++ 模式)
当编写 C++ 程序并包含(例如)时iostream
,它会导航到此包含文件,但无法解析它。另一方面,当包含(例如)时,stdlib.h
它会成功解析此类包含。
如何解决这个问题?
答案1
找到了一些解决方法。需要告诉 C 词法分析器使用如下定义来解析 Microsoft 包含文件
(defun windows-semantic-hook ()
(setq microsoft-base-dir
"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")
(add-to-list 'semantic-lex-c-preprocessor-symbol-file
(concat microsoft-base-dir "/crtdefs.h"))
(add-to-list 'semantic-lex-c-preprocessor-symbol-file
(concat microsoft-base-dir "/yvals.h"))
(add-to-list 'semantic-lex-c-preprocessor-symbol-file
(concat microsoft-base-dir "/vadefs.h"))
(add-to-list 'semantic-lex-c-preprocessor-symbol-file
(concat microsoft-base-dir "/comdefsp.h"))
(semantic-add-system-include microsoft-base-dir 'c++-mode)
(add-to-list 'auto-mode-alist (cons microsoft-base-dir 'c++-mode)))
(add-hook 'semantic-init-hooks 'windows-semantic-hook)
现在语义解析器感觉更好了(但不是完全好)并且能够解析一些包含的内容,例如<string>
,<map>
等等。