Emacs版本信息:
GNU Emacs 23.4.1
Run Code Online (Sandbox Code Playgroud)
对于具有属性的类,Emacs自动缩进访问标签(即公共,私有,受保护)似乎已损坏.当类没有属性宏时,缩进是正确的.
我应该在我的.emacs文件(下面的相关行)中添加什么来纠正这个问题?
坏缩进的示例:
#if defined(__linux__)
# define SO_EXPORT __attribute__ ((visibility("default")))
#elif defined(WIN32)
# define SO_EXPORT __declspec(dllexport)
#endif
class SO_EXPORT MyClass
: public MyBaseClass
{
public: // <--- BAD: a leading space!
MyClass(); // <--- correct, indentation is set to 3 spaces
virtual ~MyClass();
private: // <--- again with the space!
int m_myVariable;
};
Run Code Online (Sandbox Code Playgroud)
以下是在上面的代码片段中运行'c-show-syntatic-information'的结果:
以下是我的.emacs文件中的相关设置:
(defun my-c-mode-common-hook ()
(setq fill-column 130)
(setq c-basic-offset 3)
(local-set-key "\C-m" 'c-context-line-break)
(c-set-offset 'substatement-open '0)
(c-set-offset 'case-label '+) …Run Code Online (Sandbox Code Playgroud) 当我的 Windows 应用程序崩溃时,我想要一个回溯。Boost stacktrace 看起来很有趣,我在 Linux 中使用过它;但是,我safe_dump_to()在 Windows 中得到的结果为零!
我想我做了一个简单的疏忽,希望有人能提供帮助。
我正在使用带有 ninja 和 CMake 的 MSVS2017 编译器。
我已经构建了使用这些标志构建的 Boost v1.67:
link=static address-model=64 variant=release threading=multi
Run Code Online (Sandbox Code Playgroud)
我运行了测试boost_1_67_0/libs/stacktrace/test/以确保我正确构建了库。
这是我的 CMake 文件,请注意我使用的-DCMAKE_BUILD_TYPE=RelWithDebInfo:
cmake_minimum_required(VERSION 3.0)
set( target_name stacktrace_test)
# boost
set(Boost_USE_STATIC_LIBS ON)
find_package( Boost REQUIRED COMPONENTS date_time filesystem thread
system stacktrace_windbg)
add_executable(${target_name} main.cpp)
set_property(TARGET ${target_name} PROPERTY CXX_STANDARD 14 )
target_compile_definitions(${target_name} PUBLIC
BOOST_ALL_NO_LIB=1 # disable pragama inclusion
BOOST_STACKTRACE_LINK=1
BOOST_STACKTRACE_USE_WINDBG=1
)
target_include_directories(${target_name} SYSTEM PUBLIC
${Boost_INCLUDE_DIRS}
)
target_link_libraries(${target_name}
${Boost_LIBRARIES} # boost
dbgeng …Run Code Online (Sandbox Code Playgroud)