读书人

有段代码看不懂

发布时间: 2012-04-17 15:06:33 作者: rapoo

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

读书人网 >UNIXLINUX

热点推荐