【问题标题】:Why I can't pass two chars as function arguments in C?为什么我不能在 C 中将两个字符作为函数参数传递?
【发布时间】:2009-11-15 22:08:55
【问题描述】:

我有一个函数:

int get_symbol(tab *tp, FILE *fp, char delim)

我这样称呼它:

get_symbol(tp, fp, ';')

我总是在标题中声明为:

int get_symbol(tab *, FILE *, char);

不,这一切都很好,我可以执行函数中的代码并设置分隔符。 但是,如果我尝试在函数的签名中再添加一个字符,例如:

int get_symbol(tab *tp, FILE *fp, char delim1, char delim2)

函数停止执行。为什么会这样?

【问题讨论】:

  • 这应该有效,至少从您发布的内容来看。你能进一步详细说明这个问题吗? “停止执行”究竟是怎样的?
  • “停止执行”是什么意思?
  • 您的代码中有错误。显示代码。

标签: c function char


【解决方案1】:

你应该有:

int get_symbol(tab *tp, FILE *fp, char delim1, char delim2)
{
blah blah;
return 1;
}
...
...

get_symbol(tp, fp, ';','?')

你呢?

【讨论】:

    【解决方案2】:

    好的,这里没有足够的信息,所以我要疯狂地回答一下。

    您正在使用 C++ 编译器,并且没有将警告级别设置得很高。您已经更改了函数的原型,但在调用它时并未更改参数。由于overloading,C++ 编译器将它们视为不同的函数,因此没有调用正确的函数。

    这可能与正在发生的事情相去甚远。如果是的话,请给我们更多的东西……

    【讨论】:

      【解决方案3】:

      作为对“停止执行”可能意味着什么的猜测,您是否也更新了头文件中的签名?

      【讨论】:

      • 那么“停止执行”是什么意思呢?您需要发布该函数的代码并描述您期望发生的情况。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      相关资源
      最近更新 更多