我创建了两个C程序
计划1
int main()
{
}
Run Code Online (Sandbox Code Playgroud)计划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.0和Linux 4.2.0-1-MANJARO #1 SMP PREEMPT x86_64 GNU/Linux
TimeZoneInfo不为给定时区提供缩写或短名称.这样做的唯一的好办法是有一个字典,地图缩写来要么Timezone.id,StandardName或DaylightName性质.但是,我搜索缩写列表的所有源都有不同的时区名称,即与Windows中的不同.
如何在.NET中向用户显示不是全名,id或任何其他名称?我不想要UtcOffset而是Timezone缩写 - 太平洋的PST,UTC - 适用于Universal,EST - 适用于东部标准等.是否有任何C#兼容列表或数据库包含所有可能的时区及其缩写,与TimeZoneInfo.GetSystemTimeZones()您提供的那些兼容?
如何设置一个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) 匹配具有该模式的单词的正则表达式是什么:
任何顺序的数字或资本*3(最后+可能'列表')
例如,
OP3
G6H
ZZAList
349
127List
Run Code Online (Sandbox Code Playgroud)
都是有效的,而
a3G
P-0List
HYiList
def
YHr
Run Code Online (Sandbox Code Playgroud)
都是无效的.
为什么使用XML数据来设置HTML标签的样式是非法的?例如:
<li style="width:<xsl:value-of select="width"/>px">
Run Code Online (Sandbox Code Playgroud)
为什么我不能这样做?那里有替代方法吗?
我的应用程序使用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时,我没有得到任何异常.可能导致此异常的原因是什么?
我试图在我的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) 我有一个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的随机访问. …
我已经迁移到使用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中处理多个测试用例的首选方法是什么?
我在设置某些属性时遵循一个模式,我检查相应的字段是否为空,如果没有则返回该字段,如果是,则设置它.例如,我经常使用它来读取配置设置,以便懒惰地读取设置,以便只读取一次.这是一个例子:
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?