【问题标题】:Ignoring part of code after compilation编译后忽略部分代码
【发布时间】:2015-04-27 10:31:02
【问题描述】:

我的代码看起来像这样

while(!eof)
{
   if(A)
     doSomething;
   if(B)
     doSomething;
}

A 和 B 是来自命令行的参数。可能还有更多参数。我有布尔结构,其中所有可能的参数,对于每个参数,它确定他是否存在。

我可以让编译器不读取代码的某些部分吗?

我的意思是,在这段代码中,他将在每次迭代时检查 B 是否存在。我想要实现的是他只会检查一次

 if(B)
    doSomething;

我希望这只是为了优化我的程序,并且我需要在一个循环中同时拥有两个 if。

【问题讨论】:

  • 先阅读this
  • 不清楚你在问什么。 “编译器不读取”和“我需要在一个周期中同时拥有两个 if”是什么意思?似乎矛盾。
  • 查看条件编译的话题。 msdn.microsoft.com/en-us/library/ew2hz0yd.aspx
  • "如果他没有得到参数 B,他永远不会,或者最多 1 次" - 什么?请解释
  • 我认为 OP 只想检查 A 和 B 一次,而不是每次在主循环中。

标签: c function gcc compilation


【解决方案1】:

坦率地说,Ignoring part of code after compilation 没有任何意义。代码已经编译好了。然而。您可以使用条件语句跳过某些代码部分的执行,例如ifelse-if 等。

FWIW,“命令行参数”在运行时提供和考虑。在编译时,您无法根据它来决定(条件编译)。

但是,如果您愿意,您可以随时检查通过命令行提供的参数数量 (argc),并据此采取行动。

或者,如果您想拥有conditional compilation,阅读有关#ifdef/#ifndef 的内容可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2010-09-09
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2012-06-22
    • 2018-07-17
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多