小编use*_*116的帖子

Roslyn语法节点是否重用?

我一直在研究Roslyn CTP,虽然它解决了与Expression树API类似的问题,但它们都是不可变的,但Roslyn以一种完全不同的方式这样做:

  • Expression节点没有对父节点的引用,使用a进行修改ExpressionVisitor,这就是为什么可以重用大部件的原因.

  • SyntaxNode另一方面,Roslyn 有一个对其父级的引用,因此所有节点都有效地成为一个无法重用的块.类似的方法Update,ReplaceNode等等,提供了进行修改.

这到底在哪里?DocumentProjectISolution?API促进树的逐步更改(而不是按钮向上),但每个步骤是否完整复制?

为什么他们这样做了?我有什么有趣的伎俩吗?

c# expression-trees roslyn

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

避免在printf()中尾随零

我一直绊倒printf()函数系列的格式说明符.我想要的是能够在小数点后打印一个最大给定位数的double(或float).如果我使用:

printf("%1.3f", 359.01335);
printf("%1.3f", 359.00999);
Run Code Online (Sandbox Code Playgroud)

我明白了

359.013
359.010
Run Code Online (Sandbox Code Playgroud)

而不是期望的

359.013
359.01
Run Code Online (Sandbox Code Playgroud)

有谁能够帮我?

c printf

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

WPF TextBlock元素和Label控件之间有什么区别?

视觉上,以下两个片段都生成相同的UI.那么为什么有2个控件..
Snippet1

<TextBlock>Name:</TextBlock>
<TextBox Name="nameTextBox" />
Run Code Online (Sandbox Code Playgroud)

Snippet2

<Label>Name:</Label>
<TextBox Name="nameTextBox" />
Run Code Online (Sandbox Code Playgroud)

(好吧,我自己会回答这个问题......认为这是我今天从编程WPF学到的一个有用的小问题)

wpf

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

Xcode:在每次直接修改源代码的构建之前运行脚本

我做了什么:

我有一个脚本

  1. 阅读一些配置文件以生成源代码片段
  2. 查找相关的Objective-C源文件和
  3. 用步骤1中生成的代码替换源代码的某些部分.

和一个Makefile,它有一个特殊的时间戳文件作为make目标,配置文件作为目标源:

SRC = $(shell find ../config -iname "*.txt")
STAMP = $(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME).stamp
$(STAMP): $(SRC)
    python inject.py
    touch $(STAMP)
Run Code Online (Sandbox Code Playgroud)

我在项目目标的构建阶段堆栈之上添加了这个Makefile作为"运行脚本构建阶段".

发生了什么:

在编译源代码之前运行了脚本构建阶段.

但是,由于脚本在执行期间修改了源代码,因此我需要构建两次以获取最新版本的构建产品.这是我想象中发生的事情:

  1. 第一次运行:Xcode收集依赖信息--->没有变化
  2. 第一次运行:Xcode运行"运行脚本构建阶段"--->源代码在Xcode的后面更改
  3. 第一次运行:Xcode完成构建,认为没有什么需要更新
  4. 第二次运行:Xcode收集依赖信息--->源已更改,需要重建!
  5. 第二轮:Xcode运行Run Script Build Phase"--->一切都是最新的
  6. 第二轮:Xcode继续编译

在阅读Build Phases上的Xcode文档后,我尝试添加一个源文件,这个源文件在每次运行脚本时都会更新,作为"Run Script Build Phases"的输出,但没有任何改变.由于配置文件的数量可能在我的项目中有所不同,我不想指定每个输入和输出文件.

题:

如何让Xcode知道在"运行脚本构建阶段"期间所做的源文件更改?

编辑:

  • 补充说我在其他构建阶段之前放置了脚本构建阶段

scripting xcode dependencies build

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

替换WPF入口点

WPF定义了自己的Main()方法.我应该如何用我自己的Main方法替换它(通常)打开WPF MainWindow(例如通过命令行参数添加非WPF脚本模式)?

.net wpf entry-point

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

将汇编资源流中的文件写入磁盘

我似乎无法找到一种更有效的方法将嵌入式资源"复制"到磁盘,而不是以下方法:

using (BinaryReader reader = new BinaryReader(
    assembly.GetManifestResourceStream(@"Namespace.Resources.File.ext")))
{
    using (BinaryWriter writer
        = new BinaryWriter(new FileStream(path, FileMode.Create)))
    {
        long bytesLeft = reader.BaseStream.Length;
        while (bytesLeft > 0)
        {
            // 65535L is < Int32.MaxValue, so no need to test for overflow
            byte[] chunk = reader.ReadBytes((int)Math.Min(bytesLeft, 65536L));
            writer.Write(chunk);

            bytesLeft -= chunk.Length;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎没有更直接的方式来复制,除非我遗漏了一些东西......

.net c#

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

如何将对象初始值设定项用于键值对列表?

我无法弄清楚内联集合初始化的语法:

var a = new List<KeyValuePair<string, string>>();
Run Code Online (Sandbox Code Playgroud)

c#

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

从多个线程使用stdlib的rand()

我有几个线程都运行相同的功能.在每个中,它们会多次生成不同的随机数.我们尝试通过放置srand(time(0))函数的开头来做到这一点,但似乎它们都得到了相同的数字.

我们是否需要srand(time(0))每个程序只调用一次,即在main(例如)开始时,在每个被调用多次的函数的开头,或者其他什么?

c c++ random multithreading

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

OpenMP中的SECTIONS指令如何分配?

在OpenMP中使用时omp sections,将线程分配到这些块内的部分,或者将每个线程被分配给每个区段?

时间nthreads == 3:

#pragma omp sections
{
    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }

    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

id=1
id=1
Run Code Online (Sandbox Code Playgroud)

但是当我执行以下代码时:

#pragma omp sections
{
    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }

    #pragma omp section
    { 
        printf ("id = %d, \n", omp_get_thread_num());
    }
}

#pragma omp sections
{
    #pragma omp section
    { 
        printf ("id = …
Run Code Online (Sandbox Code Playgroud)

openmp

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

stdin和STDIN_FILENO有什么区别?

C 之间stdin和之间的实际区别是什么STDIN_FILENO

c

35
推荐指数
3
解决办法
7万
查看次数