小编fre*_*ass的帖子

如何避免vim中的命名空间内容缩进?

如何设置vim不缩进C++中的命名空间内容?

namespace < identifier >
{
    < statement_list > // Unwanted indentation
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,"cinoptions"没有提供编辑命名空间内容缩进的方法.

c++ vim indentation auto-indent

29
推荐指数
2
解决办法
6449
查看次数

Cmake list-get命令

为什么以下命令不起作用?

SET(MY_LIST a b c d)
LIST(GET ${MY_LIST} 0 HEAD)
MESSAGE("HEAD = ${HEAD}")
Run Code Online (Sandbox Code Playgroud)

我希望它分配aHEAD但是我得到了NOTFOUND.

我已经尝试${MY_LIST}使用双引号并将索引更改为1而不是0(不知道为什么有人会这样做,但尝试没有伤害).

cmake

24
推荐指数
1
解决办法
9011
查看次数

单元测试复杂的算法

您如何编写测试来测试一些相当复杂的算法(如N Queens问题)的解决方案?我的意思是什么应该是测试算法的正确方法

  1. 有很多解决方案(你不知道/不关心它们中有多少存在),

  2. 你只能拥有所有可能解决方案的一小部分,并且

  3. 验证解决方案是否正确可能有点棘手(可能与算法本身的复杂程度相当).

我知道N-Queens问题本身并不存在这些条件,但我提到它提供了一个例子.

algorithm unit-testing

21
推荐指数
3
解决办法
4139
查看次数

如何在vim中修复窗口中的缓冲区?

我可以修复缓冲区,以便从vim窗口中删除它的唯一方法是关闭它吗?

例如,我正在使用NERDtree插件,它在vim窗口中显示文件系统.有时我忘记在使用quickfix命令之前将焦点更改为其他窗口,并且erroneus文件最终替换文件树.(更不用说NERDtree的窗口默认宽度仅为31)

编辑:

我想用这个问题来实现的是模拟Eclipse中vim内部的视图和编辑器的概念.在这个术语中,NERDTree(和其他专门用于显示信息的插件)将是一个视图,而其他窗口将是编辑器.

vim

20
推荐指数
1
解决办法
636
查看次数

如何使用宏在C++中生成随机变量名?

我正在用C++创建一个宏来声明一个变量并为它赋值.根据宏的使用方式,宏的第二次出现可以覆盖第一个变量的值.例如:

#define MY_MACRO int my_variable_[random-number-here] = getCurrentTime();
Run Code Online (Sandbox Code Playgroud)

使用它的另一个动机是避免为变量选择某个名称,以使其与开发人员最终使用宏选择的名称相同.

有没有办法在C++中的宏内生成随机变量名?

- 编辑 -

我的意思是独特但也是随机的,一旦我可以在一个块中使用我的宏两次,在这种情况下,它将生成如下:

int unique_variable_name;
...
int unique_variable_name;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,为了唯一,必须随机生成两个变量名.

c++ random variables macros naming

17
推荐指数
4
解决办法
2万
查看次数

使用和不使用'typedef'声明枚举之间有什么区别?

在C++中声明枚举的标准方法似乎是:

enum <identifier> { <list_of_elements> };
Run Code Online (Sandbox Code Playgroud)

但是,我已经看到了一些声明,例如:

typedef enum { <list_of_elements> } <identifier>;
Run Code Online (Sandbox Code Playgroud)

如果存在,它们之间有什么区别?哪一个是正确的?

c++ enums typedef declaration

15
推荐指数
1
解决办法
2205
查看次数

C++错误:基本功能受到保护

我想知道为什么以下代码无法编译:

class base {
protected:
  typedef void (base::*function_type)() const;
  void function_impl() const {} // error: ‘void base::function_impl() const’ is protected
};

class derived: public base {
public:
  operator function_type() const {
    return boolean_test() == true ? &base::function_impl : 0; // error: within this context
  }

protected:
  virtual bool boolean_test() const = 0;
  virtual ~derived() {}
};

int main(int argc, char* argv[]) {
}
Run Code Online (Sandbox Code Playgroud)

g++ 输出:

~/protected_test$ g++ src/protected_test.cpp
src/protected_test.cpp: In member function ‘derived::operator base::function_type() const’:
src/protected_test.cpp:4:8: error: ‘void base::function_impl() const’ …
Run Code Online (Sandbox Code Playgroud)

c++ g++

9
推荐指数
1
解决办法
1762
查看次数

什么是C++最简单的RTTI实现?

我正在尝试为嵌入式操作系统实现异常处理,而我却坚持如何检测抛出的"异常"的类型(以选择适当的处理程序).

异常处理的保存和恢复上下文部分已经完成,但由于无法检测抛出的"异常"的类型,因此无法使用特定的句柄.c ++的标准RTTI实现太依赖于其他库,因此我目前认为它不可用.

考虑到我的目标是一个嵌入式系统,因此我无法创建太多代码,我可以获得(或制作)的"运行时类型信息"的最小实现是什么?

- 编辑 -

我不是在编译器,它是一个ia32-g ++.

c++ exception-handling rtti

8
推荐指数
1
解决办法
4246
查看次数

带模板功能的模板类

任何人都可以告诉这段代码有什么问题吗?

template<class X>
class C {
public:
    template<class Y> void f(Y); // line 4
};

template<class X, class Y>
void C<X>::f(Y y) { // line 8
    // Something.
}

int main() {
    C<int> c;
    char a = 'a';
    c.f(a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

汇编:

$ g++ source.cpp 
source.cpp:8: error: prototype for ‘void C<X>::f(Y)’ does not match any in class ‘C<X>’
source.cpp:4: error: candidate is: template<class X> template<class Y> void C::f(Y)
Run Code Online (Sandbox Code Playgroud)

我现在可以通过在第4行声明和定义函数来完成任务,但与单独执行相比,同时声明和定义函数的后果是什么?(这不是关于在头文件和源文件中声明函数的讨论)

注意:我已经看到了这个问题,但似乎我感兴趣的唯一部分是分开=(

c++ templates

6
推荐指数
1
解决办法
4725
查看次数

打开.vimrc进行编辑后,逃逸命令不可用

我的系统是带有MacVim 7.3(GUI)和Vim 7.2(在iTerm上)的OS X 10.6.

在MacVim上,Fugitive根本不起作用.

在Vim上,它有点不同.我已设置映射以打开.vimrc文件,如下所示:

nmap <silent> <leader>ev :e $MYVIMRC<CR>
Run Code Online (Sandbox Code Playgroud)

在打开vim之后,所有的Fugitive命令都可用,但在.vimrc使用上面的映射打开文件后,我无法发出任何Fugitive :G*命令.如果我.vimrc正常打开文件(即:e ~/.vimrc),一切都很好.

我的整个.vim目录(与.vimrc作为vimrc根)可以访问这里.

我能做些什么才能让它发挥作用?

vim macvim vim-fugitive

3
推荐指数
1
解决办法
2268
查看次数

如何获取 JFace 的 TableViewer 的有序元素?

我已经根据Vogella 的说明(转载如下)实现了 JFace 的 TableViewer 排序。碰巧排序仅在图形界面中进行(它没有反映在原始数据结构中),并且我需要按照元素在 GUI 中显示的顺序获取元素。

或者,反映原始数据结构中的排序的实现也适合。


package de.vogella.jface.tableviewer.sorter;

import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;

import de.vogella.jface.tableviewer.model.Person;

public class MyViewerComparator extends ViewerComparator {
  private int propertyIndex;
  private static final int DESCENDING = 1;
  private int direction = DESCENDING;

  public MyViewerComparator() {
    this.propertyIndex = 0;
    direction = DESCENDING;
  }

  public int getDirection() {
    return direction == 1 ? SWT.DOWN : SWT.UP;
  }

  public void setColumn(int column) {
    if (column == this.propertyIndex) {
      // Same column as last …
Run Code Online (Sandbox Code Playgroud)

sorting jface tableviewer

3
推荐指数
1
解决办法
7596
查看次数

将struct转换为unsigned char*

如何将以下内容转换structunsigned char*

typedef struct {
    unsigned char uc1;
    unsigned char uc2;
    unsigned char uc3;
    unsigned char uc5;
    unsigned char uc6;
} uchar_t;

uchar_t *uc_ptr = new uchar;
unsigned char * uc_ptr2 = static_cast<unsigned char*>(*uc_ptr);
// invalid static cast at the previous line
Run Code Online (Sandbox Code Playgroud)

c++ type-conversion static-cast

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

如何在SWT/JFace中设置双击以编辑表格单元格?

是否可以通过双击更改SWT/JFace的默认行为以启用单元格编辑?它现在的方式(单击)很难选择一个表行而不带文本字段.

这是一个自包含的代码段:

package table.editing;

import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CellLabelProvider;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;

public class TableEditor extends ApplicationWindow {

    class Element {
        private String value;

        public Element(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }

    public TableEditor() {
        super(null);

        setBlockOnOpen(true);
        open();

        Display.getCurrent().dispose();
    }

    protected …
Run Code Online (Sandbox Code Playgroud)

java tree swt jface treeviewer

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