Spacemacs主分支打开C++文件报File mode specification error求助
解决Spacemacs中cc-mode配置
c-offsets-alist时的void-function innamespace错误 我一眼就揪出问题所在啦——你大概率是在设置c-offsets-alist的时候,没给偏移列表加上正确的引用标记,导致Emacs误把innamespace当成了一个可调用的函数,但它其实只是cc-mode里用来标记命名空间缩进规则的符号键而已。
具体修复步骤
确保你的c-offsets-alist配置被单引号(')或者反引号(`)包裹,让Emacs把整个列表当作字面数据处理,而不是去执行里面的元素。比如调整后的配置应该是这样:
(setq c-offsets-alist '((access-label . -3) (brace-list-close . 0) (brace-list-entry . 0) (brace-list-intro . +) (class-close . 0) (class-open . 0) (innamespace . 0) ;; 其他你需要的偏移项可以继续加在这里 ))
报错原因解析
当你没有给列表加引用时,Emacs会尝试“求值”列表里的每一项。比如(innamespace . 0)会被解析成“调用innamespace函数,传入参数0”,但innamespace并不是一个可执行的函数,它只是cc-mode定义的一个偏移类别符号,自然就会抛出void-function innamespace的错误。
另外你用的是master分支最新版Spacemacs,cc-mode版本肯定是支持innamespace规则的,所以不用纠结版本兼容问题,把配置的语法修正就能解决问题啦。
内容的提问来源于stack exchange,提问作者user888379
相关产品推荐
相关产品推荐

