小编R.D*_*.D.的帖子

vim中的自适应标签

我碰巧在代码中工作,其中一些模块使用制表符进行缩进,而其他模块则使用空格.许多文本编辑器(如Np ++)都具有某种自适应标签功能,如果前一行(或代码块)使用空格,则使用空格进行缩进,或者根据具体情况使用制表符.

我没有在这样的vim中看到任何东西.有没有这样的插件或设置?

vim indentation

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

如何在没有typedeffing的情况下在一行中声明多个函数指针?

更多的是好奇心而不是任何事情.基本上我想知道是否可以在一行中声明多个函数指针,如:

int a = 1, b = 2; 
Run Code Online (Sandbox Code Playgroud)

有功能指针?无需诉诸typedef.

我试过了void (*foo = NULL, *bar = NULL)(int).不出所料,这不起作用.

c pointers function-pointers

8
推荐指数
2
解决办法
819
查看次数

如果在宏中声明变量会发生什么?

假设我有一个宏定义如下:

#define FOO(x,y) \
do {
  int a,b;
  a = f(x);
  b = g(x);
  y = a+b;
} while (0)

扩展宏时,GCC是否"保证"a,b的任何一种唯一性?我的意思是,如果我以下列方式使用FOO:

int a = 1, b = 2;
FOO(a,b);

之后,预处理将是:

int a = 1, b = 2;
do {
  int a,b;
  a = f(a);
  b = g(b);
  b = a+b;
} while (0)

编译器是否可以区分ado {}和ainside里面的内部?我可以使用哪些技巧来保证任何类型的唯一性(除了使变量内部有一个乱码,这使得其他人不太可能使用相同的名称)?

(理想情况下,函数对此更有用,但我的特殊情况不允许这样做)

c c++

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

为什么 ruby​​ 只返回正则表达式的最后一个匹配项?

我的正则表达式如下(\d+_)*,测试字符串是1_2_3_. Ruby 正确匹配字符串。然而,匹配数据只返回“3_”作为匹配。

例如

irb(main):004:0> /(\d+_)*/.match("1_2_3_")
=> #<MatchData "1_2_3_" 1:"3_">
Run Code Online (Sandbox Code Playgroud)

我希望像 #<MatchData "1_2_3_" 1:"1_", 2:"2_", 3:"3_">

ruby regex

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

Rust如何找出迭代器的上限?

我正在阅读几个Rust示例,并且有一些特定的代码片段,我真的不明白它是如何工作的.特别是高阶函数的这个例子.我的重点是这段代码:

let sum_of_squared_odd_numbers: u32 =
    (0..).map(|n| n * n)             // All natural numbers squared
         .take_while(|&n| n < upper) // Below upper limit
         .filter(|n| is_odd(*n))     // That are odd
         .fold(0, |sum, i| sum + i); // Sum them
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

  1. 编译器如何知道何时(0..)结束?循环是否在编译时展开并且是否都评估了lambda?

  2. 与命令式版本相比,这不是非常低效的内存吗?例如,(0..).map(|n| n * n)单独最终会占用O(n)内存.

rust

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

这种类型的C语句叫什么?

在C中,以下是有效代码:

if ((a, a+b, a*b) >= 0) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

(a, a+b, a*b)部件是否有特殊名称?

c

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

使用模板时,是否可以确定左值的类型?

把它写成文字很难,所以这里是一个例子:

int (*foo)(int) = load_sym<decltype(foo)>("foo");

template <typename T>
T load_sym(char *sym) {
    /* some other stuff */
    return (T)dlsym(sym);
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想省略该decltype(foo)部分以使其简洁.问题是,我可以确定T而无需将其明确指定为模板参数吗?

Gut觉得这可能是不可能的,但我很想知道人们是否已经找到了解决方法.

c++ templates type-deduction

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