小编Iva*_*van的帖子

为什么两个只有注释的程序二进制文件在gcc中没有完全匹配?

我创建了两个C程序

  1. 计划1

    int main()
    {
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 计划2

    int main()
    {
    //Some Harmless comments
    }
    
    Run Code Online (Sandbox Code Playgroud)

AFAIK,在编译时,编译器(gcc)应该忽略注释和冗余空白,因此输出必须类似.

但是当我检查输出二进制文件的md5sums时,它们不匹配.我也试图与优化的编译-O3-Ofast,但他们仍然不匹配.

这里发生了什么?

编辑:确切的命令和md5sums是(t1.c是程序1,t2.c是程序2)

gcc ./t1.c -o aaa
gcc ./t2.c -o bbb
98c1a86e593fd0181383662e68bac22f  aaa
c10293cbe6031b13dc6244d01b4d2793  bbb

gcc ./t2.c -Ofast -o bbb
gcc ./t1.c -Ofast -o aaa
2f65a6d5bc9bf1351bdd6919a766fa10  aaa
c0bee139c47183ce62e10c3dbc13c614  bbb


gcc ./t1.c -O3 -o aaa
gcc ./t2.c -O3 -o bbb
564a39d982710b0070bb9349bfc0e2cd  aaa
ad89b15e73b26e32026fd0f1dc152cd2  bbb
Run Code Online (Sandbox Code Playgroud)

是的,md5sums匹配多个具有相同标志的编译.

顺便说一句我的系统是gcc (GCC) 5.2.0Linux 4.2.0-1-MANJARO #1 SMP PREEMPT x86_64 GNU/Linux

c optimization gcc binary-reproducibility

109
推荐指数
3
解决办法
5578
查看次数

时区缩写

TimeZoneInfo不为给定时区提供缩写或短名称.这样做的唯一的好办法是有一个字典,地图缩写来要么Timezone.id,StandardNameDaylightName性质.但是,我搜索缩写列表的所有源都有不同的时区名称,即与Windows中的不同.

如何在.NET中向用户显示不是全名,id或任何其他名称?我不想要UtcOffset而是Timezone缩写 - 太平洋的PST,UTC - 适用于Universal,EST - 适用于东部标准等.是否有任何C#兼容列表或数据库包含所有可能的时区及其缩写,与TimeZoneInfo.GetSystemTimeZones()您提供的那些兼容?

.net c# timezone

48
推荐指数
4
解决办法
4万
查看次数

将xsl:value-of设置为href属性和XSLT中链接的文本字段

如何设置一个href,它既是链接,也有通过XSLT转换的链接文本?这是我到目前为止所做的,它给出了错误"xsl:value-of不能是xsl:text元素的子元素":

<xsl:element name="a">
   <xsl:attribute name="href">
      <xsl:value-of select="actionUrl"/>
   </xsl:attribute>
   <xsl:text><xsl:value-of select="actionUrl"/></xsl:text> 
</xsl:element>
Run Code Online (Sandbox Code Playgroud)

xml xslt href

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

仅限大写字母和数字的正则表达式,可能有"列表"

匹配具有该模式的单词的正则表达式是什么:

任何顺序的数字或资本*3(最后+可能'列表')

例如,

OP3
G6H
ZZAList
349
127List
Run Code Online (Sandbox Code Playgroud)

都是有效的,而

a3G
P-0List
HYiList
def
YHr
Run Code Online (Sandbox Code Playgroud)

都是无效的.

regex numbers capitalization

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

如何使用XSL创建HTML属性?

为什么使用XML数据来设置HTML标签的样式是非法的?例如:

<li style="width:<xsl:value-of select="width"/>px"> 
Run Code Online (Sandbox Code Playgroud)

为什么我不能这样做?那里有替代方法吗?

html xml xslt

20
推荐指数
2
解决办法
2万
查看次数

无法启动nancy self host而没有管理员权限

我的应用程序使用Nancy Selfhosting.当我在没有管理员权限的情况下启动它时,我得到一个System.Net.HttpListenerException"Access Denied".

这是代码:

static void Main(string[] args)
    {   
        var nancyHost = new Nancy.Hosting.Self.NancyHost(new Uri("http://localhost:80/"));
        nancyHost.Start();
        Application.Run();
    }
Run Code Online (Sandbox Code Playgroud)

我也试过不同的端口但没有成功.奇怪的是,在启动侦听同一个Url的HttpListener时,我没有得到任何异常.可能导致此异常的原因是什么?

c# nancy

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

无法弄清楚为什么我在Swift iOS应用程序代码中获得"Class ViewController没有初始化程序"错误

我试图在我的iOS应用程序中制作一个教程屏幕,用户滑过几张图片以了解该应用程序.一切都很好,除非我构建我的项目,我在第一行代码上得到以下错误:

ViewController类没有初始值设定项

我做错了什么?

我的ViewController.swift代码如下

import UIKit

//line below is where I get the error

class ViewController: UIViewController, UIPageViewControllerDataSource {

//end

var pageViewController: UIPageViewController
var pageTitles: NSArray!
var pageImages: NSArray!

override func viewDidLoad() {
    super.viewDidLoad()

    self.pageTitles = NSArray(objects: "", "", "")
    self.pageImages = NSArray(objects: "page1", "page2", "page3")

    self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as!
    UIPageViewController

    self.pageViewController.dataSource = self

    var startVC = self.viewControllerAtIndex(0) as ContentViewController
    var viewControllers = NSArray(object: startVC)

    self.pageViewController.setViewControllers(viewControllers as [AnyObject], direction: .Forward, animated: true, completion: nil)

    self.addChildViewController(self.pageViewController)
    self.view.addSubview(self.pageViewController.view)
    self.pageViewController.didMoveToParentViewController(self)

}

override func …
Run Code Online (Sandbox Code Playgroud)

iphone xcode ios swift xcode6

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

维护排序顺序C#的集合

我有一个Foo包含对象列表的类:List<Bar>.每个Bar属性都有一个属性,可以对它们进行排序(类型TimeSpan,表示持续时间),并且Bar是一个不可变对象 - 也就是说,持续时间不会随着算法的运行而改变.目前,对于每一个Foo我也保持Bar在列表中的第一个如果它被订购(即Bar最短的持续时间).像这样的东西:

public class Foo
{
    public List<Bar> AllBars { get; set; }

    public Bar FirstBar { get; set; }

    public Foo (Bar bar)
    {
        FirstBar = bar;

        AllBars = new List<Bar>() { bar };
    }

    public AddBar(Bar bar)
    {
        if(bar.Duration < FirstBar.Duration)
        {
            FirstBar = bar;
        }

        AllBars.Add(bar);
    }
}
Run Code Online (Sandbox Code Playgroud)

此类Foo用于处理性能(速度)至关重要的算法中.记忆很重要但不如速度快.有一个n Foo s 列表,每个都有m Bar s.直到这一刻,这门课一直很好.我现在希望为用户提供多种选择,这意味着我需要提供Bar对列表中前几个s的随机访问. …

.net c# sorting performance icomparable

12
推荐指数
2
解决办法
2905
查看次数

在Xunit中处理多个测试用例的首选方法是什么?

我已经迁移到使用Xunit进行NUnit的单元测试.使用NUnit,我将创建一个具有多个具有相同结果的测试用例的方法.例如,以下NUnit单元测试测试类构造函数的验证,特别是"name"变量.名称不能为null,空或空格.该测试检查是否正确抛出了ArgumentNullException:

    [Test]
    [TestCase(null)]
    [TestCase("")]
    [TestCase("     ")]
    [ExpectedException(typeof(ArgumentNullException))]
    public void Constructor_InvalidName_ExceptionThrown(string name)
    {
        // action
        make_Foo(name);
    }

    private make_Foo(string name)
    {
        return new Foo(name);
    }
Run Code Online (Sandbox Code Playgroud)

这就是我使用Xunit实现这个的方法:

    [Fact]
    public void Constructor_InvalidName_ExceptionThrown()
    {
        Assert.Throws<ArgumentNullException>(() => new Foo(null));
        Assert.Throws<ArgumentNullException>(() => new Foo(""));
        Assert.Throws<ArgumentNullException>(() => new Foo("    "));
    }
Run Code Online (Sandbox Code Playgroud)

这看起来很糟糕有两个原因 - 我在应该是一个"单元"测试中有多个断言,并且测试用例埋在方法中(在一些其他单元测试中可能会变得更加复杂).

在Xunit中处理多个测试用例的首选方法是什么?

c# nunit unit-testing xunit xunit.net

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

C#6自动属性 ​​- 读一次还是每次?

我在设置某些属性时遵循一个模式,我检查相应的字段是否为空,如果没有则返回该字段,如果是,则设置它.例如,我经常使用它来读取配置设置,以便懒惰地读取设置,以便只读取一次.这是一个例子:

private string DatabaseId
{
    get
    {
        if (string.IsNullOrEmpty(databaseId))
        {
            databaseId = CloudConfigurationManager.GetSetting("database");
        }

        return databaseId;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经开始使用C#6 autoproperty初始化,因为它真正清理并使我​​的代码更简洁.我想做这样的事情:

private string DatabaseId { get; } = CloudConfigurationManager.GetSetting("database");
Run Code Online (Sandbox Code Playgroud)

但我不确定编译器在这种情况下如何解释它.这是否与我的第一个代码块具有相同的效果,设置(自动实现)字段一次,然后从字段中读取?或者CloudConfigurationManager每次我都会打电话给我DatabaseId

c# automatic-properties c#-6.0

12
推荐指数
2
解决办法
2102
查看次数