我遇到了以下代码:
int main() {
int fd[2];
pipe(fd);
int pid;
if ((pid = fork()) < 0) {
sysCallFailureProcedure();
}
if (pid == SON_PROCESS) {
dup2(fd[0], 0);
execlp(TETRIS_DISP_NAME, TETRIS_DISP_NAME, NULL);
sysCallFailureProcedure();
}
char c;
enum Bool hasNotQuitted;
while (hasNotQuitted) {
c = getch();
if (!isAlegalKey(c)) {
continue;
}
if(write(fd[1], &c, 1) < 0) {
sysCallFailureProcedure();
}
kill(pid, SIGUSR2);
if (c == QUIT_KEY) {
hasNotQuitted = false;
}
}
return OPERATION_SUCCEEDED;
}
我正在尝试对其进行改进,并且丢失了continue语句(这是一种不好的做法)。但是当我这样做时 它导致我的程序无法正常运行,它是某种俄罗斯方块游戏的跑步程序。我所做的就是用这个替换continue:
if(write(fd[1], &c, 1) < 0) {
sysCallFailureProcedure();
}
kill(pid, SIGUSR2);
if (c == QUIT_KEY) {
hasNotQuitted = false;
}
表示继续后面的代码。 谁能告诉我我想念什么?
答案 0 :(得分:1)
我认为,不良做法不在于“继续”,而在于使用!isALegalKey构造。这更易读/清楚。
while (hasNotQuitted) {
c = getch();
if (isAlegalKey(c)) {
if(write(fd[1], &c, 1) < 0) {
sysCallFailureProcedure();
}
kill(pid, SIGUSR2);
if (c == QUIT_KEY) {
hasNotQuitted = false;
}
}
}