小编Alo*_*ave的帖子

C++与C源代码的编译和执行时间

我不知道这是否是一个有效的比较或有效的声明,但在我听人声称C语言编写的程序岁月++通常需要较长的时间进行编译比C语言编写的相同,并且在C++编码的应用在运行时通常比用C语言写的更慢
.这些陈述中是否有任何事实?
除了从C++提供的OOP灵活性中获益之外,是否应该从编译/执行时间的角度对上述比较进行考虑?

我希望这不会因为过于笼统或模糊而被关闭,它只是试图了解我多年来从许多程序员(主要是C程序员)听到的语句的实际事实.

c c++ performance compilation execution-time

7
推荐指数
5
解决办法
6884
查看次数

关于异常对象的双重破坏所需的说明

在他富有洞察力的论文"
错误和异常处理"中,
@ Dave Abrahams说:

如果可能的话,让你的异常类免受双重破坏.不幸的是,一些流行的编译器偶尔会导致异常对象被销毁两次.如果你可以安排它是无害的(例如通过清零已删除的指针),你的代码将更加健壮.

我无法理解这个特定的指导方针,有人可以:

  1. 请提供此双重破坏方案的代码示例&
  2. 实现自定义异常类以避免这种情况的最佳方法是什么?

c++ exception-handling exception

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

C++ 中的模拟对象

什么是 Mock 对象?你能解释一下这个概念吗?如何在 C++ 中使用 Mock 对象?任何源示例都将非常有帮助。

c++ unit-testing mocking

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

很少有人怀疑在C++中使用运算符

reinterpret_cast我们知道可以将任何指针类型到另一个任何指针类型.关于这个演员运算符我想问的问题是:

  1. 如何reinterpret_cast工作,允许reinterpret_cast工作的魔力(内部实现)是什么?
  2. 使用时如何确保安全reinterpret_cast?据我所知,它不保证安全铸造,所以在使用时要采取什么预防措施reinterpret_cast?
  3. 这个运算符的实际用法是什么?我没有在我的专业编程经验中遇到过这种情况,其中我无法使用此运算符.除了通常的int*to char*之外的任何实际示例将非常有帮助和赞赏.

另外一个关于普通铸造运营问题:
铸造运营商(static_cast,dynamic_cast,const_cast,reinterpret_cast),都称为Operators即是最好的我的理解,因此,它是正确的说法,以使该casting operators cannot be overloaded unlike most other operators(我知道不是所有的运算符可以重载,我知道其中不可能(除了问我,请不要惹恼我)我怀疑这是因为他们是运营商,标准对这些有什么看法?

c++ casting operator-overloading

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

未定义的行为:代码审查的清单

可能重复:
C++程序员应该知道的所有常见的未定义行为是什么?

我准备为C++自我和同行代码评审准备一份清单或指南,因为有太多的场景可能导致可怕的领域Undefined Behavior,我想要提出一种在大多数使用最多的未定义行为的清单C++语言结构.

当然,不可能通过修改变量来预测未定义的行为,Sequence points但我认为可以列出从其他场景中发现的场景.

如果您正在执行代码审查,Undefined Behavior您会注意哪些常见的生成方案?

c++ undefined-behavior

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

在win32 C++中如何启用静态文本控件来复制文本?

我正在编写一个简单的win32应用程序,它有一个窗口和静态文本,现在我想让用户通过右键单击(标记和复制)来复制文本我该怎么做?

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG1 DIALOG 0, 0, 369, 318
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Win32 demo"
FONT 8, "Ms Shell Dlg"
{
     LTEXT           "Questions to dddd@gmail.com", IDC_STATIC, 96, 87, 150, 8, SS_LEFT
}
Run Code Online (Sandbox Code Playgroud)

c++ winapi

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

本机C程序中的Rh和Rmath.h

"RH"和"Rmath.h"的头文件和R.app C.但是之间的接口,它们似乎是可读只有通过R指令"R CMD SHLIB something.c"

我希望编译我的本机C程序,使用gcc包含它们.我正在使用Snow Leopard,我无法找到那些头文件!

有帮助吗?

c macos r

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

对于定义为0的宏,#ifdef和#if之间的细微差别

给出下面的C文件:

$ cat macros.c
#ifdef MACRO
#  error MACRO is defined
#else
#  error MACRO is undefined
#endif
#if MACRO
#  error MACRO is non-zero
#else
#  error MACRO is zero
#endif
Run Code Online (Sandbox Code Playgroud)

以下的预期产量是多少?

$ gcc           -c macros.c
$ gcc -DMACRO   -c macros.c
$ gcc -DMACRO=0 -c macros.c
Run Code Online (Sandbox Code Playgroud)

:这是我机器上gcc的预处理器.

$ gcc           -c macros.c
macros.c:4:4: error: #error MACRO is undefined
macros.c:9:4: error: #error MACRO is zero
$ gcc -DMACRO   -c macros.c
macros.c:2:4: error: #error MACRO is defined
macros.c:7:4: error: #error MACRO …
Run Code Online (Sandbox Code Playgroud)

c macros c-preprocessor

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

C++中某些类型的指针之间的距离限制是什么?

假设我有两个指向键入的指针T:

T* first = ...// whatever
T* second = ... //whatever else
Run Code Online (Sandbox Code Playgroud)

我可以确定这两个指针之间的距离永远不会超过:

((size_t)(-1))/sizeof(T)

c++ pointers

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

如何在linux内核中不使用malloc()创建缓冲区?

如何在没有malloc()函数(或calloc())的情况下在linux内核中创建一个缓冲区而没有函数的干净缓冲区free()

c malloc free buffer linux-kernel

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