如果函数包含在命名空间中,则"go to beginning of the function"不起作用 (C++)

"go to beginning of the function" doesn't work if function is enclosed in a namespace (C++)

本文关键字:the of function beginning 不起作用 C++ to go 包含 函数 命名空间      更新时间:2023-10-16

在emacs中,我使用C-M-a和C-M-e来C++代码中函数的开头/结尾。但是,如果函数包含在命名空间中(它只是跳转到命名空间外壳的开头或结尾),则此功能不再有效。有没有人对此有很好的解决方案?

这是一个已知的错误。它已在三天前发布的 Emacs 24.1 中修复。明白了。不幸的是,该修复程序从未向后移植,并且不太可能很快发生这种情况。

获得 Emacs 24.1 来解决这个问题是最好的选择。如果你被困在旧版本的Emacs上,一个常见的解决方法是使用预处理器宏。

#define NAMESPACE_BEGIN(X) namespace X {
#define NAMESPACE_END      }
NAMESPACE_BEGIN(tools)
class Foo {
    //...
};
NAMESPACE_END

一些从业者还有其他原因。我个人喜欢它如何防止默认的Emacs设置缩进命名空间的代码。