小编nod*_*kai的帖子

如何在TUI模式下向后滚动GDB的命令窗口?

假设

(gdb) print *this
Run Code Online (Sandbox Code Playgroud)

产生了20行输出.是的,会有Type <return> to continue, or q <return> to quit,但我想在输出到底部之后回滚到顶部.

我不认为http://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html回答了我的问题.它指出

<PgUp>
将活动窗口向上滚动一页.

但是当焦点在命令窗口上时,PgUp会回退命令历史记录,而不是在命令窗口中向后滚动.只有我这个行为受到了影响吗?

我正在使用Putty来SSH到RHEL(如果这有任何不同.)

scroll gdb tui key-bindings

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

C++ 11:重载决策和SFINAE

我正在学习SFINAE,这是我第一次尝试打印"YES"仅适用于那些你可以输出的类型std::ostream(暂时忘掉std::operator<<(std::ostream &, T)......):

template <typename T>
void f(const T &) { std::cout << "NO" << std::endl; }

template <typename T, int SFINAE = sizeof(static_cast<std::ostream &(std::ostream::*)(T)>(
    &std::ostream::operator<<))>
void f(const T &) { std::cout << "YES" << std::endl; }
Run Code Online (Sandbox Code Playgroud)

虽然它们似乎可以使用f(std::vector<int>())(产生"NO")但编译器抱怨f(0)的含糊不清:http://ideone.com/VljXFh

prog.cpp:16:5: error: call of overloaded 'f(int)' is ambiguous
  f(0);
     ^
prog.cpp:6:6: note: candidate: void f(const T&) [with T = int]
 void f(const T &) { std::cout << "NO" << std::endl; } …
Run Code Online (Sandbox Code Playgroud)

c++ sfinae overload-resolution template-meta-programming c++11

12
推荐指数
2
解决办法
828
查看次数

C预处理器:如何创建字符文字?

出于好奇,我想知道是否可以定义一个可以将其参数转换为字符文字的宏:

 switch(getchar()) {
   case MYMACRO(A): printf("Received A\n"); break;
   case MYMACRO(a): printf("Received a\n"); break;
   case MYMACRO(!): printf("Received an exclamation mark\n"); break;
   default: printf("Neither a nor A nor !\n"); break;
 }
Run Code Online (Sandbox Code Playgroud)

我头脑中有两种可能的解决方案:

枚举所有字符

#define LITERAL_a 'a'
#define LITERAL_b 'b'
...
#define MYMACRO(x) LITERAL_ ## x
Run Code Online (Sandbox Code Playgroud)

它不起作用MYMACRO(!)因为!它不是C标识符的有效组件.

将参数转换为字符串文字

#define MYMACRO(x) #x [0]
Run Code Online (Sandbox Code Playgroud)

它涉及指针取消引用,在像案例标签这样的地方无效.

我不是要求一种方法来"改进"上面的switch语句本身.这只是一个玩具的例子.重复.这只是一个玩具的例子.

c macros c-preprocessor

11
推荐指数
2
解决办法
2622
查看次数

GCC specs文件:如何获取安装路径

我没有给-Wl,-rpath=$HOME/local/gcc52/lib64每次从源代码构建的GCC 5.2调用,而是spec以这种方式修改了它的文件:

*link_command:
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:    %(linker) -rpath=%:getenv(HOME /local/gcc52/lib64) ...
Run Code Online (Sandbox Code Playgroud)

但这取决于我的具体安装$HOME/local/gcc52.有没有更好的方法来引用调用的GCC本身的安装路径?

本手册页对我帮助不大:

c++ linux gcc

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

C++ 11"重载lambda",具有可变参数模板和变量捕获

我正在研究一种可能被称为"overloaded lambda"的C++ 11习语:

使用可变参数模板重载n个函数似乎对我很有吸引力,但事实证明它不适用于变量捕获:任何[&] [=] [y] [&y]([this]如果在成员函数中)等导致编译失败:( error: no match for call to '(overload<main(int, char**)::<lambda(int)>, main(int, char**)::<lambda(char*)> >) (char*&)'使用我的本地GCC 4.9.1和ideone .com GCC 5.1)

另一方面,固定的2-ary情况没有遇到这个问题.(尝试改变第一#if 0#if 1上ideone.com)

关于这里发生了什么的任何想法?这是编译器错误,还是我偏离了C++ 11/14规范?

http://ideone.com/dnPqBF

#include <iostream>
using namespace std;

#if 0
template <class F1, class F2>
struct overload : F1, F2 {
  overload(F1 f1, F2 f2) : F1(f1), F2(f2) { }

  using F1::operator();
  using F2::operator();
};

template <class F1, class F2>
auto …
Run Code Online (Sandbox Code Playgroud)

c++ lambda template-meta-programming variadic-templates c++11

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

Python:正则表达式中的POSIX字符类?

如何isprint在Python中搜索给定字符串中的10个字符的序列?

使用GNU grep,我会这样做 grep [[:print:]]{10}

python regex character-class

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

F#:解构与受歧视的联合绑定

open System

let x = (1, 2)
let (p, q) = x
printfn "A %A" x
printfn "B %A %A" p q

let y = Some(1, 2)
try
  let None = y
  ()
with
  | ex -> printfn "C %A" ex
let Some(r, s) = y
printfn "D %A" y
// printfn "E %A %A" r s
Run Code Online (Sandbox Code Playgroud)

当我取消注释最后一行时,编译器拒绝代码抱怨

/home/rRiy1O/prog.fs(16,19):错误FS0039:值或构造函数'r'未定义
/home/rRiy1O/prog.fs(16,21):错误FS0039:值或构造函数的' 没有定义

是不允许在解构中使用枚举let

但首先,甚至当我注释掉最后一行...什么在这里干什么?这是输出:

A (1, 2)
B 1 2
D Some (1, 2)
Run Code Online (Sandbox Code Playgroud)

更新

为了记录,这是固定版本: …

f# pattern-matching destructuring let variable-declaration

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

Golang函数参数没有类型?

func Match(pattern, name string) (matched bool, err error)
Run Code Online (Sandbox Code Playgroud)

为什么不必pattern有类型(如pattern string)?

syntax go

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

什么阻止__attribute __((packed))进入ISO C/C++?

这是我在编写某些类系统软件时使用C/C++的最重要原因之一,但它只不过是一个非常常见的编译器扩展.为什么委员会不考虑正式支持它?它是否与现有规范中的任何子句不兼容,例如public和private是否对对象的内存布局有影响?

c c++ attributes memory-alignment

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

为什么GNU binutils和GDB合并为一个包?

请参阅标签部分.

这个决定背后的理由是什么?合并是否会影响构建最新binutils和GDB的建议方式?(事实上​​当我检查binutils-2_25_1并跑步时make all && make install,我也得到了gdb.)

c++ linux gdb gnu-toolchain binutils

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