【问题标题】:C code a bit difficult? [closed]C代码有点难? [关闭]
【发布时间】:2015-09-07 15:24:54
【问题描述】:

我的目标:看懂下面的代码

我目前的理解:编译时,传递一个 int 和指向指针的指针

signal() 执行以下操作http://www.tutorialspoint.com/c_standard_library/c_function_signal.htm 这对我来说有点难以理解。

int main(int argc, char **argv){
        signal(SIGFPE, word);
}

【问题讨论】:

  • 我认为“有点困难”是双关语:)
  • 您是否尝试过阅读有关 C 的 任何 书籍或教程?在这种情况下,您将了解 main 函数的作用以及如何调用它(或者更确切地说,如何不调用它)。
  • “我不知道如何通过”。你不应该调用main 函数;已经为你完成了。
  • 另外,请等待更高级的概念(如信号和函数指针),直到您了解基础知识以及如何处理普通指针。
  • 如果您想学习如何处理命令行参数,请参阅例如this recent answer of mine.

标签: c pointers


【解决方案1】:

虽然signal(2) 原则上是由 C99 标准化的,但实际上它是由操作系统特定的服务提供的。 signal 被赋予一个函数指针作为其第二个参数(信号处理程序,在您的情况下为 word)。

在 Linux 上,请在使用 signal 函数之前仔细阅读 signal(7)

main 函数非常特殊(在托管的 C 实现中)。它被赋予一个参数计数和一个程序参数字符串数组。有关详细信息,请参阅此example。您的程序的执行从main 开始(具体如何执行取决于具体实现,请阅读crt0

【讨论】:

  • And, + 或者它甚至可以被int main(void){...} 替换,这取决于参数是否从命令行传递。
  • 但这应该避免恕我直言。应该教导用户(尤其是初学者)始终定义int main(int argc, char**argv)
  • 对不起,我忘了在这里添加我的赞成票。抱歉迟到了,顺便说一句,我忘了说我是你的粉丝,因为你的回答风格。 :)
猜你喜欢
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多