小编Zeu*_*eus的帖子

使C浮点文字浮动(而不是双重)

众所周知,在C中,浮点文字(例如1.23)具有类型double.因此,任何涉及它们的计算都会提升到两倍.

我正在研究一个嵌入式实时系统,它有一个浮点单元,只支持单个precision(float)数字.我的所有变量都是float,这个精度就足够了.我根本不需要(也买不起)double.但每次都喜欢

if (x < 2.5) ...
Run Code Online (Sandbox Code Playgroud)

写的,灾难发生:减速可以达到两个数量级.当然,直接的答案是写

if (x < 2.5f) ...
Run Code Online (Sandbox Code Playgroud)

但这很容易被遗漏(并且直到太晚才难以发现),尤其是当一个"配置"值被#define一个不那么自律(或刚刚开发)的开发人员放在一个单独的文件中时.

那么,有没有办法强制编译器将所有(浮点)文字视为float,就像使用后缀一样f?即使它违反了规范,我也不在乎.或任何其他解决方案?顺便说一句,编译器是gcc.

c floating-point gcc literals

70
推荐指数
2
解决办法
9055
查看次数

带触发器的继承WPF样式不起作用

我有一种淡出动画控件的样式:

<Style x:Key="ExpireFadeStyle">
    <Style.Resources>
        <!--Change this in a derived style if required-->
        <sys:Double x:Key="FinalVal">0.25</sys:Double>
    </Style.Resources>
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsExpired}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard x:Name="ExpireAnimation">
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                From="1" To="{StaticResource FinalVal}" Duration="0:0:3" />
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
            <DataTrigger.ExitActions>
                <StopStoryboard BeginStoryboardName="ExpireAnimation" />
            </DataTrigger.ExitActions>
        </DataTrigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

(该IsExpired属性始终存在于DataContext应该使用样式的控件的中。)

当我直接在控件中使用此样式时,一切正常:

<StackPanel Style="{StaticResource ExpireFadeStyle}">
    ...etc
Run Code Online (Sandbox Code Playgroud)

但是当我从这种风格中衍生出来时,就像

<Style x:Key="ExpireTextFadeStyle" BasedOn="{StaticResource ExpireFadeStyle}"/>
Run Code Online (Sandbox Code Playgroud)

...然后在相同控件上以相同方式使用派生样式,则不起作用。(当然是要对它进行一些更改,尤其是FinalVal,但它必须首先在平凡的情况下起作用)。

继承的样式本身似乎确实起作用:如果在其中添加一些样式Setter,则会看到其效果。似乎Triggers没有继承或根本不起作用。如何解决呢?

wpf triggers wpf-style

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

标签 统计

c ×1

floating-point ×1

gcc ×1

literals ×1

triggers ×1

wpf ×1

wpf-style ×1