【问题标题】:Non-returning code marking attribute? (__attribute__ ((noreturn))) [duplicate]不返回码标记属性? (__attribute__ ((noreturn))) [重复]
【发布时间】:2013-01-26 22:17:31
【问题描述】:

什么相当于 C# 中的 GCC __attribute__ ((noreturn)) 归属?禁止在错误执行流的方法中出现关于没有 return 语句的警告。我的代码将通过调用错误抛出函数来抛出错误。我正在使用 Unity3D 4.0 中包含的 Mono。

【问题讨论】:

  • 你不能只是throw 吗?或者只是在已经抛出的方法下面抛出一个 throw?
  • @MarcGravell 首先,只是抛出不是一种选择,因为我想通过将所有内容抽象为一个函数调用(如 C 风格)来降低复杂性。其次,我不明白你后面的说法是什么意思。你能再解释一下吗?
  • @RaphaëlAlthaus 每次出现都写#pragma 也不是一种选择,因为它增加了要编写的代码,这与我想做的正好相反。
  • 写一个返回异常的方法。您可以根据需要让它执行副作用。

标签: c# attributes


【解决方案1】:

C# 很聪明。如果您有一个返回值的方法,但您 throw 出现异常,则它不会生成警告。

int foo(int bar)
{
    if (bar > 0) return bar + 1;
    throw new NotSupportedException(); 
}

不生成警告。

但是,如果它确实产生了警告,您可以使用#pragma warning。见http://msdn.microsoft.com/en-us/library/441722ys(v=vs.80).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2021-10-17
    • 2019-01-07
    • 2021-08-30
    • 2015-09-05
    • 2015-08-12
    • 2022-01-23
    相关资源
    最近更新 更多