小编mat*_*ath的帖子

我什么时候使用fabs什么时候使用std :: abs就足够了?

我认为abs并且fabs在使用时表现不同math.h.但是,当我只使用cmathstd::abs,我必须使用std::fabsfabs?或者这不是定义?

c++ math.h cmath

96
推荐指数
3
解决办法
6万
查看次数

在C中生成Segfault的最简单的标准符合方式是什么?

我认为问题就是这么说的.涵盖从C89到C11的大多数标准的示例将是有帮助的.我虽然这个,但我猜它只是未定义的行为:

#include <stdio.h>

int main( int argc, char* argv[] )
{
  const char *s = NULL;
  printf( "%c\n", s[0] );
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

正如一些投票要求澄清:我希望有一个程序通常有编程错误(我能想到的最简单的是段错误),这是保证(按标准)中止.这与最小的段错误问题有点不同,它不关心这种保险.

c iso segmentation-fault

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

哪个跨平台预处理器定义?(__ WIN32__或__WIN32或WIN32)?

我常常看到__WIN32,WIN32或者__WIN32__.我认为这取决于使用的预处理器(来自visual studio,或gcc等).

我现在必须首先检查os,然后检查使用过的编译器吗?我们在这里使用G ++ 4.4.x,Visual Studio 2008和Xcode(我假设它是gcc)和我们正在使用的ATM __WIN32__,__APPLE____LINUX__.

c++ macros c-preprocessor

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

如何分析内存使用情况?

我知道Valgrind,但它只是检测内存管理问题.我正在搜索的是一个工具,它给了我一个概述,我的程序的哪些部分确实消耗了多少内存.使用例如树图(如KCachegrind为Callgrind所做的)的图形表示将是很酷的.

我正在使用Linux机器,因此Windows工具对我没有多大帮助.

c++ linux memory profiler valgrind

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

你如何缩进预处理器语句?

当有许多预处理器语句和许多#ifdef级联时,很难得到概述,因为通常它们不会缩进.例如

#ifdef __WIN32__
#include <pansen_win32>
#else
#include <..>
#ifdef SOMEOTHER
stmts
#endif
maybe stmts
#endif
Run Code Online (Sandbox Code Playgroud)

当我考虑缩进这些预处理器语句时,我担心会与一般缩进级别混淆.那么你如何以一种美丽的方式解决这个问题呢?

c++ code-formatting indentation

22
推荐指数
3
解决办法
8382
查看次数

如何检查源代码作业的抄袭?

我如何判断两个源代码(独立于他们的语言C,Java,Lisp ......)是否有强烈的迹象表明它们可能是相互抄袭的?

背景:我将举办我的第一次计算机语言研讨会.我们为主要的编程语言准备了小练习,如C/C++,Python,Java,......还有OCaml,Haskell,......为学生们提供了一些实用的介绍(也包括编程范式).我们估计有300名学生,每人有超过50个编程任务.所以一个人不能检查所有的作业.

我想用于自然语言的反剽窃技术(论文,论文,书籍章节等)对源代码不起作用,对吗?此外,由于所需的接口,这些编程任务的解决方案将具有固有的相似性.

我做了一点搜索,发现:MOSS中提到:用JavaScript检查代码剽窃用于C/C++的抄袭检测的​​变量重命名

plagiarism-detection

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

我应该使用"-ansi"或显式"-std = ..."作为编译器标志吗?

我已经读过 ANSI C与ISO C不完全相同,编译器可能对"-ansi"的解释有所不同.(gcc将其映射到C90,clang将其映射到C89)目前我倾向于使用"-std = ..."而不是"-ansi",因为它明确地显示了使用哪个标准.由于我特别感兴趣的是在Linux,Windows和MAC上编译,我担心一些编译器无法理解"-std = ..."而是"-ansi".那么使用一个在另一个上有任何利弊吗?

c compiler-flags c89 ansi-c

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

如何等距重采样线(或曲线)?

我有一个l_1点系列给出的线p_1,...,p_n.我现在想要一个新的生产线l_2k两点:q_1,...,q_k.但对于所有i \in {1,...,k-1}: abs( q_i - q_i+1 ) = const,意味着段l_2是等距或制服.

  • k >= 2
  • 并且p_1和p_n应该在l_2.
  • abs( p_i - p_i+1 ) 不是常数

一种解决方案是使用样条近似一条线,然后再次对其进行二次采样,以获得均匀的长度段.我可以做得更好吗?那有什么C++代码吗?

啊,我错过了一个具体的细节:那些q_i应该在l_1,这意味着它们是在线段l_1或它们是样本点l_1.

algorithm geometry line sampling

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

您使用哪种持续集成软件?

谷歌表示:

  • 詹金斯(第一印象:不轻量级)
  • 巡航控制(第一印象:不轻量级)
  • 被咬(似乎死了,最后一张票> 8个月)
  • BuildBot

但BuildBot似乎有点过时,没有提供统计数据,配置不是很直观......我们感兴趣的功能是:

  • 对构建从服务器的多平台支持:Linux,Mac OS X,Windows
  • 轻松构建从站设置
  • 具有分支灵敏度的Mercurial支持
  • 预定的构建
  • 提交钩子构建
  • 带完整调试输出的电子邮件通知
  • Trac集成会很好但不是必备功能

编辑:我现在赞成Jenkins胜过Hudson,因为它是Hudson真正的开源分支.甲骨文刚刚失败.

mercurial continuous-integration cruisecontrol multiplatform

7
推荐指数
3
解决办法
3087
查看次数

如何在C中实现DRY原则来循环矩阵

在处理二维数组时,例如矩阵,您需要经常访问元素.执行此操作的直接方法是通过两个嵌套循环:

for( int i=0; i < n; ++i ) {
  for( int j=0; j < m; ++j ) {
     // do something with data[i][j]
  }
}
Run Code Online (Sandbox Code Playgroud)

这个代码原则经常在整个代码中反复复制.你是如何解决这个问题的?我认为解决这个问题的唯一方法是使用带函数指针的访问者函数,对吧?

编辑:为了更具建设性,我们假设你有矩阵类型typedef double** Matrix;.

对于C++,这可以通过这种方式解决:循环遍历应用变量函数的矩阵元素

c loops dry

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