首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

有段代码看不懂,

2012-04-17 
有段代码看不懂,请指教,if (tcsetattr(TtyFd, TCSANOW, &TtyAttr) 0)Error(Unable to set tty)for (

有段代码看不懂,请指教,
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函数有那么一段私有的代码,功能又比较独立,就成了函数。。

热点排行