小编Cla*_*are的帖子

混合使用不同编译器版本构建的二进制文件

我想知道,调用代码放在一个.dll中,可能是用不同的工具链构建的吗?并且正在使用旧的编译器构建.lib文件来构建更新的代码吗?

我知道,第二个不是更好,但我想知道,这是不可能的.

我的情况恰如其分:

我有a.exe使用VC7.1构建的b.lib文件,该文件也是用VC7.1构建的.a.exe调用c.dll也使用的代码b.dll.现在我想写一个新的c.dll,但用VC9编译它.(我想这样做,因为我需要一些不支持使用VC7.1构建它们的库.) - 我c.dll还需要b.lib,我仍然有源代码,因此我可以重新编译它.

那么,它可以使它工作吗?如果没有,你能提供一个简短的解释,究竟是什么不允许这样做?

c++ dll static-libraries visual-c++

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

内联块/文本顶部上方的IE额外空间(过渡文档类型)

我在下面的textarea上面有一个额外的空间,但仅限于ie.怎么解决?

<div class="field">
    <label>Info</label><textarea cols="40" rows="4"></textarea>
</div>


.field {
     margin: 0px;
     margin-top: 2px;
}

label {
     display: inline-block;
     width: 5em;
     margin-right: 0.5em;
}

textarea {
     display: inline-block;
     width: 22em;
     vertical-align: text-top;
}
Run Code Online (Sandbox Code Playgroud)

如果我在label和textarea标签之间放一个空格,那么空间就会消失.但后来我在他们之间得到了一个水平的额外空间.

编辑:我发现,问题出现在doctype - transitional.严格的任务是可以的.有没有办法,用transtional修复它?

html css internet-explorer xhtml-transitional

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

C++数组包装器

我想要一个围绕数组的包装器,例如,它将被存储在堆栈中 - 不关心内存释放 - 可以通过大括号列表进行初始化,并且可以在普通数组的任何位置进行替换.然后,我生成了以下代码.现在我想知道,我错过了什么. - 那么 - 这就是我想要的吗?

template<class T, size_t size>
struct Array
{
    T body[size];

    operator T* () { return body; }
};
Run Code Online (Sandbox Code Playgroud)

编辑:

我可能不精确.包装仅用于结构目的.当它处于初始化列表(主要是)时,它将用于从大括号列表构造数组.喜欢

class A {
    protected: A(int array[])
    ...

class B : public A {
    public: B() : 
        A( (Array<int, 2>) {{ 1, 2 }} )
        ...
Run Code Online (Sandbox Code Playgroud)

有一个const铸造操作员版本的提议. - 我一直在考虑这个问题,但我不确定,是不是真的需要.虽然const T[]通过现有的运算符隐式地进行转换,并且可以通过给定来定义常量数组T = const ...,但还有原因吗?

c++ arrays templates

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

将0-1 int r值转换为bool

我有一个表达式,它返回0或1个整数作为临时值.该值可能已经在寄存器中,我想将其作为bool从内联函数返回.

有没有一种普通的方法来做到这一点?我相信(bool)static_cast<bool>注入额外的测试和设置说明.这对我来说太过分了,而案例是关于内存管理器的性能关键部分.

c++ performance

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