小编tjm*_*tjm的帖子

在Ubuntu 10.04上设置工作D2.x工具链(使用gtkd)

我已经和D玩了几天,并且对它感到非常兴奋,直到,我试图让gtkd工作.我现在浪费了3天中最好的部分试图获得一个工作设置,并开始得到(阅读;很久以前得到)有点士气低落.我想知道在我放弃之前是否有人可以提供帮助.我在网上找到的很多信息已经过时,所以我不确定我是否认为这甚至是可能的.

剩下的就是我到目前为止所尝试的内容,如果您有快速解决方案,可能不需要阅读它,所以请随意跳转到... [跳转到此处]

所以,首先我需要知道,探戈实际上可以与D2.0一起使用,我相信它不是最初的,但现在D2.x是这样的,你可以使用探戈和恐惧症并排.如果这不是真的,那么我想我已经陷入了第一道障碍,这是一个非首发.

到目前为止我采取的步骤.

  1. 我从ubuntu存储库安装了gdc
  2. 我从repos安装了libtango-headers(注意,只有标题,没有可用的库,所以没什么帮助)
  3. 我手动安装了dsss

这个设置会编译D,但是当我来安装gtkd(带有dsss)时,它编译但是在尝试使用它编译任何东西时我得到了各种错误(与tango有关).好吧,正如我所提到的,我没有libs,所以这不应该是意料之外的.我试图手动安装探戈库但仍然有很多错误,并最终使用了一个dsss net install tango警告我,我不能回到phobos(一些困扰我的东西,就像我提到的那样,我认为这两个可以和对方一起使用)无论如何,我继续前进并完全搞砸了我的设置.我现在无法编译任何D.

对不起我无法更明确地说明我在上一节中遇到的错误,老实说我不记得了.

无论如何,我删除了我安装的所有内容.并重新开始.

  1. 我从repos安装了gdc
  2. 我手动安装了dss

我现在读到最新的探戈不适用于gdc(不确定这是否属实)所以我

  1. 得到了dmd的deb并安装了它.
  2. 手动安装了latested tango(libs和header).
  3. 用dsss安装了gtkd

现在我无法识别dmd,因此只能使用gdc.然而,这并没有找到探戈.如果我直接使用dmd,它会找到tango和gtkd,但是我发现有关volatile语句被弃用的错误.在D2.x中显然是正确的东西,它让我回到"甚至支持探戈".

天哪,我很困惑!

[跳到这里]

如果有人能给我一步一步的说明如何设置工作设置,我将永远感激不尽!

谢谢,T.

更新: "我们在那里!"

所以我从http://www.digitalmars.com/d/download.html下载了dmd.2.049.zip 并解压缩到我的主目录并做了一个export PATH = $PATH:~/dmd2/linux/bin(感谢dsimcha).

忘了dsss.根据http://www.dsource.org/projects/gtkd/wiki/UsingSubversion上的说明获得了gtkd的svn版本.编辑GNUmakefile更改前缀/home/me/dmd2/linux并执行了make install.

编辑~/dmd2/linux/bin/dmd.conf所以包含的路径../include(放入gtkD库,../lib所以我不需要编辑库路径).

现在最后用gtkD编译我需要链接libgtkd和libdl,这是由dmd mydprog.d -L-lgtkd -L-ldl(由于jpf)完成的.

d gtkd

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

c ++模板似乎打破了访问说明符

以下代码由于显而易见的原因而无法编译,即Foo正在尝试访问Bar的私有成员.但是,如果您取消注释/注释标记的行,使Foo成为模板,它会编译并输出42.我在这里缺少什么?为什么这样做?在我看来它不应该.

谢谢你的帮助.

#include <iostream>

class Bar {
    private:
    static const int x = 42;
};

//template <int>   // uncomment me
struct Foo {
    static const int i = Bar::x;
};

int main(int argc, char* argv[]) {

    std::cout << Foo::i    << std::endl;   // comment me
    //std::cout << Foo<0>::i << std::endl;   // uncomment me
}
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

仅包含编译时常量的类的大小

例如,如果我有一个只包含编译时常量的类,

class A {
    static const int x = 1;
    static const int y = 2;
    static const int z = 3;
};
Run Code Online (Sandbox Code Playgroud)

我相信情况是这样的,只要不采用常量的地址,它们就可以(将会)在编译时被替换它们使用它们并且不占用可执行文件中的任何空间(作为常量,显然,数字本身必须出现).如果是这种情况可以/将该类优化出来吗?并且,如果某些东西继承class A自己,但仍然只使用常量并且不使用它们的地址,这会改变吗?

哦,并假设,在非继承版本中,除了作为访问常量的方法之外,该类实际上并未在任何地方使用.

谢谢.

c++ const

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

浮点和整数模糊度

我有一个函数(和一个构造函数),应该能够取整数和浮点值.事实上,我希望它采取一个int64_t或一个long double,所以我想要的是,

class Foo {
    public:
    Foo(int64_t value=0);
    Foo(long double value);
};
Run Code Online (Sandbox Code Playgroud)

但如果我这样做,并尝试Foo f = 1;编译器抱怨从转换intFoo是不明确的.好的,但是如果我改变第一个构造函数来取一个int32_t没有这种歧义.任何人都可以向我解释为什么会这样.

c++ floating-point integer ambiguity

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

PHP中的闭包或create_function

我已经决定使用闭包来代替我的回调create_function,因此只支持PHP> 5.3,主要是因为增加了可调试性,也因为我假设(他们对假设的说法是什么?)是on-the的开销. -fly编译create_function在我的情况下可能会抵消任何额外的比较,并且必须在函数内进行.

这可能仍然是这种情况(对于我的应用程序)并且需要进一步测试,但我对这个(非常)简单测试的输出感兴趣,该测试显示该create_function方法的速度比关闭时快两倍以上只有四个条件(和concats).显然在我的测试用例中没有进行额外的处理,这就是大部分速度将会获得或丢失的地方,但是在你没有多少额外处理但是有很多条件(可以删除)和回调被调用足够多次我开始认为使用它可能更好create_function.

然而,create_function和之间有明显的相似性eval,我对它很谨慎.

所以主要的问题是创建的匿名函数create_function和闭包函数之间的区别是什么?

我正在考虑的一些具体问题,create_function甚至可以在eval禁用功能时使用?并且,我确信我最近在某处读到,create_function即使声明为内部函数,函数也会污染全局(或类)命名空间,但闭包不会.我现在找不到对此的引用,但这些陈述中的一个或两个都是真的吗?


这是我跑的小测试:

<?php

function foo($a=true, $b=true, $c=true, $d=true)
{
    $inner1 = create_function(
        '', 
        '$r = \''.($a ? 'a' : '').
                  ($b ? 'b' : '').
                  ($c ? 'c' : '').
                  ($d ? 'd' : '').'\';
         return $r;'
    );  


    $inner2 = function() use ($a, $b, $c, $d) 
    {   
        $r = ''; 
        if($a) { $r .= …
Run Code Online (Sandbox Code Playgroud)

php closures callback anonymous-function

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

为什么枚举中的元素数量会改变C++中私有typedef的可见性?

对不起,描述性问题标题不是很清楚.我不太清楚如何描述这一点,希望如果有人能够向我解释这一点,我可以在以后做得更好.

我即将来到这里并询问为什么以下示例正在运行.它展示了我希望的行为,但我不确定它为什么或是否是标准的,或者我是否对编译器感到幸运.无论如何,在整理一个最小的工作示例发布在这里,我发现它根本没有做我想的.所以这里......

   struct Foo {
       enum BAR { A, B, C, D, E };
       private: typedef BAR BAR;
   };

   int main(int argc, char* argv[]) {
       int x = (Foo::BAR)42;
       int y = Foo::D;
  }
Run Code Online (Sandbox Code Playgroud)

似乎正在发生的事情以及我非常高兴的是,Foo采用了枚举常量,之后BAR变为私有.所以我没有得到任何错误,int y =但我得到一个Foo::BAR私人错误int x=.然而,这似乎只适用于枚举中的5个或更多常量,删除它E并且它都编译好,即BAR保持公开.

什么在这里工作?谢谢.

(PS.编译器是GCC 4.4.3)

c++ enums

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

jQuery的stop()似乎阻止了尚未排队的动画

jQuery如何stop()实际工作?

如果你看这里(http://jsfiddle.net/hWTT6/),当你将鼠标悬停在主蓝色框上时,它应该渐变为红色,当你将它悬停时,它应该会消失.问题是,即使鼠标在第一次淡入淡出完成之前已经徘徊,它也会完全淡化为红色(然后再变回蓝色).使用幻灯片效果可以更清楚地看到问题.将鼠标悬停在幻灯片"按钮"上,主框将滑动为蓝色,悬停,它将向后滑动.但是在第一个动画完成之前,请尝试在开关和关闭之间徘徊.您将看到所有四个动画都已执行.我在这里包含了两个例子,表明它不仅仅是一种效果或某种问题.

我认为通过stop在动画之前添加a可以很容易地解决这个问题,如代码中所示.但是,如果我这样做,当前的动画将停止,而下一个动画将永远不会启动.几乎就像stop阻止调用发生的动画一样stop.

我在这里错过了什么?

谢谢.

javascript jquery animation

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

在python中维护集合或列表理解中的序列类型

如果我有一个可以对两个集合和列表进行操作的函数并且应该返回序列的修改形式,是否有办法保留序列类型但仍然使用理解?例如,在下面,如果我stripcommonpathprefix用一个集合调用,它可以工作,但具有将集合转换为列表的不良副作用.是否有可能保持类型(仍然使用理解),而不必直接检查isinstance,然后根据它返回正确的类型?如果没有,那么最干净的方法是什么?

def commonpathprefix(seq):

    return os.path.commonprefix(seq).rpartition(os.path.sep)[0] + os.path.sep


def stripcommonpathprefix(seq):

    prefix = commonpathprefix(seq)
    prefixlen = len(prefix)
    return prefix, [ p[prefixlen:] for p in seq ]
Run Code Online (Sandbox Code Playgroud)

谢谢,对不起,如果这是一个基本问题.我刚开始学习python.

PS我正在使用Python 3.2.2

python list-comprehension list set python-3.x

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

关于浮点的一些问题

我想知道在浮点表示中是否以一种方式表示数字,它是否会在具有更大尺寸的表示中以相同的方式表示.也就是说,如果一个数字具有特定的表示形式float,如果它float被转换为a ,它将具有相同的表示形式double,然后在转换为a时仍然相同long double.

我想知道因为我正在写一个BigInteger实现和传入的任何浮点数我发送给一个接受long double转换它的函数.这引出了我的下一个问题.显然浮点并不总是具有精确的表示,所以在我的BigInteger类中,当给定浮点数时我应该尝试表示什么.std::cout << std::fixed << someFloat;即使与传入的数字不同,尝试表示相同的数字也是合理的.这是否是我能得到的最准确的表示?如果是这样, ...

什么是提取该值的最佳方法(以10的幂为基础),此时我只是将其作为字符串抓取并将其传递给我的字符串构造函数.这会有效,但我不禁觉得这是一个更好的方法,但当你用我的基础划分时,肯定会拿下余数并不准确.

最后,我想知道是否存在一个等价的浮点数uintmax_t,这是一个始终是系统中最大浮点类型的类型名称,或者没有任何意义,因为它long double总是最大的(即使它是相同的一个双).

谢谢,T.

c++ floating-point floating-accuracy

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