小编jwf*_*arn的帖子

为什么编译器没有检查C++中的异常?

C++为已检查的异常提供了语法,例如:

void G() throw(Exception);
void f() throw();
Run Code Online (Sandbox Code Playgroud)

但是,Visual C++编译器不检查它们; throw标志被忽略了.在我看来,这使得异常功能无法使用.所以我的问题是:有没有办法让编译器检查异常是否被正确捕获/重新抛出?例如,Visual C++插件或不同的C++编译器.

PS.我希望编译器检查异常是否被正确捕获,否则你最终会遇到必须对每个函数调用进行捕获的情况,即使它们明确声明它们不会抛出任何东西.

更新:当抛出标有throw()的函数时,Visual C++编译器确实显示警告.这很好,但令人遗憾的是,当你调用可能抛出的子程序时,警告不会出现.例如:

void f() throw(int) { throw int(13); }
void h() throw() { g(); } //no warning here!
Run Code Online (Sandbox Code Playgroud)

c++ exception visual-c++

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

Java中是否可以进行静态元编程?

我是C++静态元编程的粉丝.我知道Java现在有泛型.这是否意味着Java中可能存在静态元编程(即编译时程序执行)?如果是这样,任何人都可以推荐任何可以了解更多信息的好资源吗?

java metaprogramming

36
推荐指数
4
解决办法
9370
查看次数

在PowerShell中,带有括号的环境变量名称,如%ProgramFiles(x86)%?

在PowerShell脚本中,如何获取名称中包含括号的环境变量的值?

更复杂的是,一些变量的名称包含括号,而其他变量的名称没有括号.例如(使用cmd.exe):

C:\>set | find "ProgramFiles"
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
Run Code Online (Sandbox Code Playgroud)

我们看到%ProgramFiles%的不一样了%ProgramFiles(x86)%.

我的PowerShell代码以一种奇怪的方式失败,因为它在括号后忽略了环境变量名称的一部分.由于这恰好匹配了一个不同但现有的环境变量的名称,我不会失败,我只是得到了错误变量的正确值.

这是PowerShell脚本语言中的一个测试函数,用于说明我的问题:

function Do-Test
{
   $ok = "C:\Program Files (x86)"       # note space between 's' and '('
   $bad = "$Env:ProgramFiles" + "(x86)" # uses %ProgramFiles%

   $d = "${ Env:ProgramFiles(x86) }"    # fail (2), LINE 6
#  $d = "$Env:ProgramFiles(x86)"        # fail (1)

   if ( $d -eq $ok ) {
      Write-Output "Pass"
   } elseif …
Run Code Online (Sandbox Code Playgroud)

powershell escaping environment-variables

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

另一种退出IEX而不是ctrl-C的方法

我知道我们可以使用control-C退出IEX控制台.我很好奇是否有一个命令输入控制台也会做同样的事情.

elixir iex

30
推荐指数
4
解决办法
5492
查看次数

在Ruby中逃脱和转换字符串的最佳方法是什么?

Ruby有没有任何内置的转义转义字符串的方法?在过去,我使用正则表达式; 但是,我发现Ruby可能一直在内部进行这样的转换.也许这个功能在某处暴露.

到目前为止,我已经提出了这些功能.他们工作,但他们似乎有点hacky:

def escape(s)
  s.inspect[1..-2]
end

def unescape(s)
  eval %Q{"#{s}"}
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

ruby escaping

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

Chocolatey的Git套餐有什么区别?

Chocolatey的软件包存储库显示了两个用于安装Git的流行软件包:

这两个包之间有什么区别?如何决定是否使用:

choco install git
Run Code Online (Sandbox Code Playgroud)

要么:

choco install git.install
Run Code Online (Sandbox Code Playgroud)

是另一个的超集吗?

chocolatey

27
推荐指数
2
解决办法
5253
查看次数

用于生成编程的非C++语言?

C++可能是静态元编程最流行的语言,Java不支持它.

除了C++之外还有其他语言支持生成编程(创建程序的程序)吗?

lisp haskell boo metaprogramming clojure

24
推荐指数
7
解决办法
3600
查看次数

如何使用Sass(或其他工具)合并.CSS文件?

我可以使用萨斯使用编译多个.SCSS或.SASS输入文件到一个单一的.CSS输出文件@import所描述这里.

如果我@import用来包含普通的.CSS文件,它们就不会被合并.输出.CSS文件仍包含@import指令.那讲得通.

但有没有办法可以覆盖这种行为,也许是命令行切换到Sass编译器?换句话说,我可以告诉Sass尝试强制合并,@import "foo.css";就好像它是.SCSS文件一样吗?

我正在使用带有许多.CSS文件的第三方库(Google Closure Library).我在我的项目中只使用了其中一些.我宁愿避免使用手动解决方案,例如将所有这些文件重命名为.SCSS(虽然这似乎有效)或将其内容复制并粘贴到我的.SCSS文件中(也可以).而且我不想将它们全部提供给客户端进口.我真的很喜欢Sass包含我使用'原样'的几个.CSS文件并生成单个输出样式表.可能?我还应该看看其他工具吗?

css sass google-closure google-closure-library

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

如何在C++模板代码中修复'预期的'primary-expression'错误?

这是另一个VC9与GCC 4.2编译错误问题.以下代码使用VC9(Microsoft Visual C++ 2008 SP1)编译,但不适用于Mac上的GCC 4.2:

struct C
{
    template< typename T >
    static bool big() { return sizeof( T ) > 8; }
};

template< typename X >
struct UseBig
{
    static bool test()
    {
        return X::big< char >(); // ERROR: expected primary-expression
    }                            // before 'char'
};

int main()
{
    C::big< char >();
    UseBig< C >::test();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以解决这个问题?

c++ gcc templates

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

如何将一个PowerShell函数的'argument-line'传递给另一个?

我正在尝试编写一些PowerShell函数来执行某些操作,然后透明地调用现有的内置函数.我想传递所有未触及的论点.我不想知道论点的任何细节.

我厌倦了使用'splat'来做这件事@args但是没有按照我的预期工作.

在下面的例子中,我写了一个叫做myls打印你好的玩具函数!然后调用相同的内置函数,Get-ChildItem内置别名ls调用其余参数行完整.到目前为止我的工作得很好:

function myls
{
  Write-Output "hello!"
# $MyInvocation | Format-List          # <-- uncomment this line for debug info
  Invoke-Expression ("Get-ChildItem " + $MyInvocation.UnboundArguments -join " ")
}
Run Code Online (Sandbox Code Playgroud)

正确的版本myls应该能够处理没有参数的调用,带有一个带有命名参数的参数,来自包含多个分号分隔命令的行,并且参数中的变量包括包含空格的字符串变量.基本上,它应该是替代品ls.

下面的测试比较myls和内置ls:

[注意:输出省略和/或压缩以节省空间]

PS> md C:\p\d\x, C:\p\d\y, C:\p\d\"jay z"
PS> cd C:\p\d
PS> ls                                 # no args
PS> myls                               # pass
PS> cd ..
PS> ls d                               # one arg
PS> …
Run Code Online (Sandbox Code Playgroud)

powershell metaprogramming splat

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