如何设置vim不缩进C++中的命名空间内容?
namespace < identifier >
{
< statement_list > // Unwanted indentation
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,"cinoptions"没有提供编辑命名空间内容缩进的方法.
为什么以下命令不起作用?
SET(MY_LIST a b c d)
LIST(GET ${MY_LIST} 0 HEAD)
MESSAGE("HEAD = ${HEAD}")
Run Code Online (Sandbox Code Playgroud)
我希望它分配a给HEAD但是我得到了NOTFOUND.
我已经尝试${MY_LIST}使用双引号并将索引更改为1而不是0(不知道为什么有人会这样做,但尝试没有伤害).
您如何编写测试来测试一些相当复杂的算法(如N Queens问题)的解决方案?我的意思是什么应该是测试算法的正确方法
有很多解决方案(你不知道/不关心它们中有多少存在),
你只能拥有所有可能解决方案的一小部分,并且
验证解决方案是否正确可能有点棘手(可能与算法本身的复杂程度相当).
我知道N-Queens问题本身并不存在这些条件,但我提到它提供了一个例子.
我可以修复缓冲区,以便从vim窗口中删除它的唯一方法是关闭它吗?
例如,我正在使用NERDtree插件,它在vim窗口中显示文件系统.有时我忘记在使用quickfix命令之前将焦点更改为其他窗口,并且erroneus文件最终替换文件树.(更不用说NERDtree的窗口默认宽度仅为31)
编辑:
我想用这个问题来实现的是模拟Eclipse中vim内部的视图和编辑器的概念.在这个术语中,NERDTree(和其他专门用于显示信息的插件)将是一个视图,而其他窗口将是编辑器.
我正在用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++中声明枚举的标准方法似乎是:
enum <identifier> { <list_of_elements> };
Run Code Online (Sandbox Code Playgroud)
但是,我已经看到了一些声明,例如:
typedef enum { <list_of_elements> } <identifier>;
Run Code Online (Sandbox Code Playgroud)
如果存在,它们之间有什么区别?哪一个是正确的?
我想知道为什么以下代码无法编译:
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 ++的标准RTTI实现太依赖于其他库,因此我目前认为它不可用.
考虑到我的目标是一个嵌入式系统,因此我无法创建太多代码,我可以获得(或制作)的"运行时类型信息"的最小实现是什么?
- 编辑 -
我不是在编译器,它是一个ia32-g ++.
任何人都可以告诉这段代码有什么问题吗?
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行声明和定义函数来完成任务,但与单独执行相比,同时声明和定义函数的后果是什么?(这不是关于在头文件和源文件中声明函数的讨论)
注意:我已经看到了这个问题,但似乎我感兴趣的唯一部分是分开=(
我的系统是带有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根)可以访问这里.
我能做些什么才能让它发挥作用?
我已经根据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) 如何将以下内容转换struct为unsigned 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) 是否可以通过双击更改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) c++ ×7
vim ×3
jface ×2
algorithm ×1
auto-indent ×1
cmake ×1
declaration ×1
enums ×1
g++ ×1
indentation ×1
java ×1
macros ×1
macvim ×1
naming ×1
random ×1
rtti ×1
sorting ×1
static-cast ×1
swt ×1
tableviewer ×1
templates ×1
tree ×1
treeviewer ×1
typedef ×1
unit-testing ×1
variables ×1
vim-fugitive ×1