问题列表 - 第1539页

有趣的编译器项目

我目前正在选择一个项目,以便在接下来的8周内完成毕业级编译器课程.我想做一些与优化相关的事情,因为我以前在那个领域没有多少工作,但是该领域的任何事情都是公平的.

你做过的最有趣的编译器相关项目是什么?你从中学到了什么?


编辑:谢谢大家的好建议.我很抱歉没有更新这个问题.

我最终做的项目是在LLVM上进行简单的自动向量化优化.LLVM有矢量类型,但似乎没有任何方法可以在不支持前端的情况下利用它们.此优化将正常标量代码转换为矢量代码.

由于自动矢量化是一个相当难以实现的优化,因此我们尽可能地限制了我们的范围.首先,为了在代码中公开指令级并行性,我们寻找符合我们标准的单块循环,然后将它们展开特定次数,以便它们可以方便地进行矢量化.然后,我们实现了Larsen和Amarasinghe 在利用多媒体指令集开发超级词级并行中所规定的打包算法.

即使是这种优化的简化版本也非常复杂.有很多限制; 例如,您不希望对存在于循环之外的变量进行矢量化,因为程序的其余部分期望它是标量.我们在过去几周里花了很多时间.虽然这个项目很有趣,但我们学到了很多东西.

compiler-construction

26
推荐指数
6
解决办法
1万
查看次数

调试停止后VS 2k8不释放文件句柄:无法将文件X复制到输出目录,因为它正由另一个进程使用

每隔一段时间,通常当我在UI程序集中停止调试时,我会收到以下错误,这需要重新启动Visual Studio 2008并且这会降低我的工作效率:

错误13无法将文件[UI程序集]复制到[输出目录].该进程无法访问文件[输出目录] [UI程序集],因为它正由另一个进程使用.

重新启动后,我收到此错误:

错误1无法找到元数据文件[RELEASE文件夹中的实用程序功能程序集].

我觉得这真的很奇怪,因为我们从不使用Release配置.

我在Windows Vista上使用VS 2k8 SP1.

我知道这是VS调试器没有通过使用handle实用程序(以前来自Sysinternals)释放其文件句柄.该过程是devenv.exe.

我试过关闭并重新打开解决方案.没工作.只有完整的VS2k8重启才能正常工作.

我已经尝试添加一个预构建事件,按照此处的描述移动文件,但这不起作用,因为Windows无法删除文件的原因与它无法替换它的原因相同:它有一个打开的句柄.

我甚至尝试使用上面描述的handle.exe util手动关闭句柄,然后尝试预构建事件.Visual Studio显然不知道它的句柄已关闭,因为VS构建失败,但handle.exe显示该文件没有打开的文件句柄.

为了记录,这里是我运行的加载项:

  • ReSharper 4
  • Smart Paster 2008
  • Typemock隔离器
  • TestDriven.NET 2.13.2184

我也为此项目使用Developer Express控件,因此也可能与它有关.

visual-studio-2008 visual-studio

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

C++中的前向引用或声明

如何在C++中转发引用/声明以避免循环头文件引用?

我在头文件中有#ifndef防护,但是内存告诉我我需要这个前向引用的东西 - 我之前使用过的<>但是不记得怎么做.

c++ syntax forward-declaration

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

如何从Windows资源管理器启动PowerShell?

有没有办法从Windows资源管理器中的特定文件夹中启动PowerShell,例如右键单击文件夹并选择"在此文件夹中打开PowerShell"?

在我第一次每天运行MSBuild时必须将目录更改为我的项目文件夹真的很烦人.

windows powershell

254
推荐指数
11
解决办法
10万
查看次数

如何将Unicode转义序列转换为.NET字符串中的Unicode字符?

假设您已将文本文件加载到字符串中,并且您希望将所有Unicode转义符转换为字符串内的实际Unicode字符.

例:

"以下是Unicode'\ u2320'中整数字符的上半部分,这是下半部分'\ U2321'."

.net c# unicode

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

如何从$ _POST获取键值?

echo $_POST["name"]; //returns the value a user typed into the "name" field
Run Code Online (Sandbox Code Playgroud)

我希望能够返回密钥的文本.在这个例子中,我想返回文本"name".我可以这样做吗?

php arrays

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

使用mod_rewrite RewriteRule重写所有查询以不需要.php扩展名

我想要所有的疑问

http://mysite.com/something/otherthing?foo=bar&x=y
Run Code Online (Sandbox Code Playgroud)

被重写为

http://mysite.com/something/otherthing.php?foo=bar&x=y
Run Code Online (Sandbox Code Playgroud)

换句话说,只需将.php扩展名设为可选的.

php url mod-rewrite friendly-url

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

编译器无法转换受约束的泛型类型

我有一个通用类型为"G"的类

在我的班级模型中,我有

public class DetailElement : ElementDefinition
Run Code Online (Sandbox Code Playgroud)

假设我有这样的方法

        public void DoSomething<G>(G generic)
            where G : ElementDefinition
        {
            if (generic is DetailElement)
            {
                ((DetailElement)generic).DescEN = "Hello people"; //line 1
                //////
                ElementDefinition element = generic;
                ((DetailElement)element).DescEN = "Hello again"; //line 3
                //////
                (generic as DetailElement).DescEN = "Howdy"; //line 5
            }
            else
            {
                //do other stuff
            }
        }
Run Code Online (Sandbox Code Playgroud)

编译器报告第1行中的一个错误:

Cannot convert type 'G' to 'DetailElement'
Run Code Online (Sandbox Code Playgroud)

但第3行工作正常.我可以通过执行第5行编写的代码解决此问题.

我想知道的是,为什么编译器报告第1行中的错误而不是第3行中的错误,因为据我所知,它们是相同的.

编辑:恐怕我可能会遗漏一些重要的框架逻辑

edit2:虽然编译器错误的解决方案很重要,但我的问题是编译器为什么在第1行而不是第3行报告错误.

c# generics casting constraints

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

什么Win32 API可用于查找打开给定文件的进程?

如果我读取或写入文件并收到33或32错误,我想记录一条消息,其中包含打开文件的其他进程的名称.必须有一个Win32 API,我可以使用它来获取此信息.Process Explorer显示它.当然,Process Explorer也有关于内存中所有进程的信息.我宁愿在没有询问所有过程的情况下找到罪魁祸首.

api winapi file

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

如何让PHP为每个用户自动创建子域?

如何创建像http://user.mywebsite.com这样的子域?我必须以某种方式访问​​htaccess吗?它实际上是否可以通过纯PHP代码创建它,或者我需要使用一些外部脚本 - 服务器端语言?

对于那些回答:那么,如果他们提供某种DNS访问,我应该问我的主机吗?

php subdomain

156
推荐指数
6
解决办法
12万
查看次数