日期:2014-05-16  浏览次数:20670 次

有段代码看不懂,请指教,
if (tcsetattr(TtyFd, TCSANOW, &TtyAttr) < 0)
  Error("Unable to set tty");


  for (;;)
  {
  unsigned char Char = 0;
  fd_set ReadSetFD;

  void OutputStdChar(FILE *File) {
char Buffer[10];
int Len = sprintf(Buffer, OutputHex ? "%.2X " : "%c", Char);
fwrite(Buffer, 1, Len, File);
}
  FD_ZERO(&ReadSetFD);

  FD_SET(CommFd, &ReadSetFD);
  FD_SET( TtyFd, &ReadSetFD);
  ....//省略
  }
================
红色部分不解???
OutputStdChar是函数吗?

------解决方案--------------------
啊,是函数,gcc允许函数嵌套定义。
------解决方案--------------------
g++就不支持这种写法了。
------解决方案--------------------
是一个函数,根据c语言编程里边的描述

Each function definition has the form
(每一个函数的形式都是如下这样)

return-type function-name(argument declarations)
{
declarations and statements
}

Various parts may be absent; a minimal function is
(有些部分可能略去了;最简化的函数是下面这样)
dummy() {}
which does nothing and returns nothing. A do-nothing function like this is sometimes
useful as a place holder during program development. If the return type is omitted, int
is assumed.

由上可见,你标注的红色部分对于一个函数而言,已经“五脏俱全”了。

你可以反汇编一下,相当于一个这个大的C函数有那么一段私有的代码,功能又比较独立,就成了函数。。