小编Vor*_*rac的帖子

"符合标准的编译器可能选择不实现非规范化浮点数"的意义是什么?

ISO/IEC 9899:2011§5.2.4.2.210(p48)说:

是否存在次正规数的特征是FLT_HAS_SUBNORM,DBL_HAS_SUBNORMLDBL_HAS_SUBNORM的实现定义值:

-1不确定
0缺席(类型不支持次正规数)
1存在(类型支持次正规数)

什么了!所以在某些平台上我不能写double d = 33.3?或者编译器会自动将其转换为333E-1存在或不存在非标准化浮点数的实际意义是什么?

c floating-point language-lawyer c11

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

在编写Makefile时,如何使用:在其中使用

我目前正在通过一些不同的来源学习c,其中一个是学习C硬道路PDF和Cprogramming.com获得额外的功劳,它说要使用全部:在Makefile中.我目前正在使用Kali Linux,vim用于我的编辑器,到目前为止,我的Makefile看起来像这样.

CFLAGS=-Wall -g

clean: "this is on the next line with a Tab in--->"
     rm -f ex1
Run Code Online (Sandbox Code Playgroud)

我只是想了解语法并将所有内容:以及如何添加到它中.它说,我的下一个项目EX3添加到all:clean我的Makefile中,如果有人可以解释这一点更好,我会非常感激,因为我不想没有理解所有的额外信贷跳跃前进.

如果你需要一个参考点,我是在LearnCTheHardWay的第三课.我刚开始用C语言使用Linux.感谢您的时间和任何答案.

c makefile

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

使用基类中派生类的常量

我有以下设计:

class PureVirtual 
{
    unsigned m_count;  // = 0 in constructor
    void register() {assert(m_count + 1 <= MAX); m_count++;};
};

class A : public PureVirtual 
{enum {MAX = 42}};
Run Code Online (Sandbox Code Playgroud)

除了PureVirtual不知道MAX.

我使其工作的方式是创建m_max成员PureVirtual,然后将其初始化为一个愚蠢的值(因为gcc如果成员未在构造函数中初始化则发出警告),然后在构造函数中设置它A.而"最好"的部分是它无法制造const.

什么是最好的方法?

c++

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

我需要替换向量中的一系列元素

我有std::vector一定的大小,需要将另一个向量(大小为34)的内容分配给位置34 ... 67.原始向量的大小不应该改变.看看矢量的API

  • assign()不起作用,因为它取代了所有元素.

  • swap()不起作用,因为它取代了所有元素.

  • emplace()不起作用,因为它创建了一个新元素.

  • reserve(),然后是at()循环可以工作,但避免循环会很好.

  • memcpy(target.data [34],source.data(),34*sizeof(T))可以在没有循环的情况下工作,但看起来像是一个C hack.

  • std :: copy可以很好地工作,但隐藏循环我希望它比memcpy()慢.

元素是整数.在更改向量中的元素范围时,哪个应该是默认方法?

c++ stl vector

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

是否可以通过继承实现接口?

struct I { 
      virtual void foo() = 0; 
      virtual void bar() = 0;
};

struct A { 
        void foo(){};
 };
struct B: public A, public I {

     void bar(){};
};
Run Code Online (Sandbox Code Playgroud)

这个伪代码应该在C++中有效吗?目前我foo()在链接时收到未定义的引用错误.

如果这不起作用,请推荐一种技术来创建一个接口,该接口通过继承实现,如示例所示.

c++ polymorphism inheritance

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

如何获取远程分支,覆盖本地提交?

我在我当地的master分支机构做了一些提交.现在我想扔掉它们并最终得到等于的状态origin/master.

我不愿意git reset --hard,因为这些提交是另一个分支的快速合并的结果,所以我和远程提交是混合的.

目前我唯一能想到的解决方案是

git fetch
git checkout origin/master
git branch -D master
git checkout -b master
git remote origin/master
Run Code Online (Sandbox Code Playgroud)

肯定有更快的方法吗?

git

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

python中的连续赋值

这样做是否合法

a = b = 3
Run Code Online (Sandbox Code Playgroud)

在python?如果是这样,这是一种不好的做法吗?

python variable-assignment

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

为什么我能够在没有默认构造函数的情况下默认构造对象?

这是C和C++之间边界层上的一行函数.该函数获取了一堆void* 并将它们转换为它们应该存在的类型.发现错误:

MDLPeriph periph_dline = *static_cast<MDLPeriph*>(dline_periph);
Run Code Online (Sandbox Code Playgroud)

确实,periph_dline应该是一个参考.让我感到困惑的是,这段代码在没有警告的情况下编译.此外,gdb在检查此代码时,报告Internal GDB error.和崩溃.

据我所知,上面的代码默认构造了一个MDLPeriph对象.然后使用新对象的复制构造函数从右侧分配值.

但是MDLPeriph没有默认构造函数!这怎么可能?

平台和工具:

Windown 7
yagarto的这个版本使用以下版本:

binutils:2.23.1 gcc:4.7.2 newlib:1.20.0 gdb:7.5.1

(2012年12月22日,mifi)openocd o.7.0

c++ constructor

-3
推荐指数
1
解决办法
64
查看次数