小编Nat*_*man的帖子

将大括号放在与单行"if"语句的语句相同的行上是不是很糟糕?

因此我知道,总是在if,for等中包含花括号被认为是一种好的做法,即使它们是可选的,如果只有一个后面的语句,因为它更容易意外地执行以下操作:

if(something == true)
    DoSomething();
    DoSomethingElse();
Run Code Online (Sandbox Code Playgroud)

如果你没有把括号快速编辑代码.

虽然这样的事情怎么样:

if(something == true)
{   DoSomething(); }
Run Code Online (Sandbox Code Playgroud)

这样你仍然占用更少的线(IMO提高了可读性)但仍然不太可能从上面意外地犯错误?

我问,因为我不相信我以前见过这种风格的if或循环,但我确实看到它用于C#属性中的getter和setter,如:

public string Name 
    {get;set;}
Run Code Online (Sandbox Code Playgroud)

不要问什么是最好的,因为这太主观了,而只是这是否被认为是可接受的风格,如果不是,为什么不.

c# language-agnostic coding-style

9
推荐指数
6
解决办法
1282
查看次数

如何区分同一文件的两个部分?

I have a source file with two similar yet subtly different sections. I'd like to merge the two sections into one subroutine with a parameter that handles the subtle differences, but I need to be sure I'm aware of them all so I don't miss any.
What I usually do in such cases is copy each of the sections to a separate file and then use tkdiff or vimdiff to highlight the differences. Is there any way to skip the …

language-agnostic linux diff

9
推荐指数
2
解决办法
4164
查看次数

从C源代码中自动删除未使用的局部变量

我想从C文件中删除未使用的局部变量.例:

int fun(int a , int b)
{
  int c,sum=0;
  sum=a + b;
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

这里未使用的变量是'c'.

我将从外部获得所有未使用的局部变量的列表.现在使用我所拥有的未使用的局部变量,我们必须从源代码和删除中找到局部变量.
在上面的例子中,"c"是未使用的变量.我会知道它(我有代码).在这里,我必须找到c并删除它.

编辑

关键是不要使用外部工具查找未使用的局部变量.关键是要从给定列表的代码中删除它们.

c automated-refactoring

9
推荐指数
4
解决办法
5454
查看次数

如何在Perl中解决一组约束?

我在Perl中有以下一组约束(只是一组约束样本,而不是我真正需要的约束):

$a < $b
$b > $c
$a is odd => $a in [10..18]
$a > 0
$c < 30
Run Code Online (Sandbox Code Playgroud)

我需要找到一个($a, $b, $c)满足约束的列表.我天真的解决方案是

sub check_constraint {
    my ($a, $b, $c) = @_;
    if !($a < $b) {return 0;}
    if !($b > $c) {return 0;}
    if (($a % 2) && !(10 <= $a && $a <= 18)) {return 0;}
    if !($a > 0) {return 0;}
    if !($c < 30) {return 0;}
    return 1;
}

sub gen_abc {
    my $c …
Run Code Online (Sandbox Code Playgroud)

math perl constraints linear-algebra linear-programming

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

Vim突出显示复制到剪贴板的字符/单词/行

我对vim很新.我正在尝试练习(最近一直在阅读一些教程),但我发现如果没有突出显示复制粘贴的字符/单词/行,我就无法生存.

在Textmate中,我通常按SHIFT + CTRL + LeftArrowKey突出显示单词,然后复制.

我如何在VIM中做到这一点?

注意:我安装了NERDTree插件并映射了一些供我自己使用的密钥.

vim

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

如何在C中调试gdb中的St9bad_alloc故障?

我有一个程序失败:

terminate called after throwing an instance of 'std::bad_alloc'
  what():  St9bad_alloc
Run Code Online (Sandbox Code Playgroud)

我想这与malloc/有关free,但我不知道哪一个.

我可以在gdb中设置什么断点来破坏错误,以便我可以查看堆栈跟踪?

该程序是C和C++的组合,使用gcc 3.4.2编译.

c c++ debugging gdb bad-alloc

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

有没有办法在Perl中读取MATLAB的.mat文件?

我在MATLAB中生成了一些我想用Perl处理的数据.我将MATLAB中的数据保存在.mat文件中.有没有办法在Perl中阅读它?

perl file-io matlab mat-file

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

偏移指针的正确方法是什么?

我想传递一个指向函数的指针.我希望这个指针指向数组中间的某个位置.假设我有这样的数组unsigned char BufferData[5000];,下面的语句在语法上是否正确?

writeSECTOR( destAddress, (char *)( BufferData + (int)(i * 512 )) );
// destAddress is of type unsigned long
// writeSECTOR prototype: int writeSECTOR ( unsigned long a, char * p );
// i is an int
Run Code Online (Sandbox Code Playgroud)

c arrays pointers offset

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

如何强制GCC编译未使用的函数?

我将项目中的一些代码拆分为一个单独的库,以便在另一个应用程序中重用.这个新库定义了各种功能但没有实现,我当前的项目和其他应用程序都将实现这些功能的自己版本.

我在原始项目中实现了这些功能,但它们不会在其中的任何位置调用.它们只被这个新库调用.结果,编译器将它们优化掉,并且我得到链接失败.当我向这些函数添加一个虚拟调用时,链接失败就会消失.

有没有办法告诉GCC编译这些函数,即使它们没有被调用?

我正在使用-O2SuSE linux(x86-64_linux_2.6.5_ImageSLES9SP3-3)使用gcc 4.2.2进行编译.

optimization gcc

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

在Windows 7中使用ActivePerl时@ARGV为空

我有以下Perl脚本.我试图使用ActivePerl在Windows 7中运行它:

#!c:\Perl64\bin\perl.exe -w

use strict;

my $mp3splt_exe = 'c:\Program Files (x86)\mp3splt\mp3splt.exe';

my $mp3splt_args = '-o "@n @f" -g "r%[@o @N]"  -f -t 6.0';

print @ARGV;
my $filename = $ARGV[0];

print "$mp3splt_exe $mp3splt_args $filename\n";
Run Code Online (Sandbox Code Playgroud)

(正如你所看到的,我正在尝试为mp3splt创建一个包装器:-))

当我像这样运行它:

C:\ Program Files(x86)\ mp3splt> run_mp3splt.pl a

我明白了:

Use of uninitialized value $filename in concatenation (.) or string at C:\Program Files (x86)\mp3splt\run_mp3splt.pl line 12.
c:\Program Files (x86)\mp3splt\mp3splt.exe -o "@n @f" -g "r%[@o @N]"  -f -t 6.0
Run Code Online (Sandbox Code Playgroud)

所以,首先,当我print @ARGV,没有任何东西被打印出来,其次,当我分配时$filename = $ARGV[0],$filename …

perl activeperl command-line-arguments windows-7

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