小编Sco*_*t B的帖子

具有属性的类的Emacs访问标签缩进不正确

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'的结果:

  • 用宏:((标签206))
  • 没有宏:((inclass 196)(访问标签196))

以下是我的.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)

c++ emacs indentation

5
推荐指数
0
解决办法
296
查看次数

Windows MSVS 2017 上的 boost::stacktrace

当我的 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)

c++ boost cmake stack-trace visual-studio

2
推荐指数
1
解决办法
2042
查看次数

标签 统计

c++ ×2

boost ×1

cmake ×1

emacs ×1

indentation ×1

stack-trace ×1

visual-studio ×1