Tôi đang cố gắng biên dịch đoạn mã này từ cuốn sách "Ngôn ngữ lập trình C" (K & R). Đây là phiên bản cơ bản của chương trình UNIX wc
:
#include <stdio.h>
#define IN 1; /* inside a word */
#define OUT 0; /* outside a word */
/* count lines, words and characters in input */
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
Và tôi gặp lỗi sau:
$ gcc wc.c
wc.c: In function ‘main’:
wc.c:18: error: ‘else’ without a previous ‘if’
wc.c:18: error: expected ‘)’ before ‘;’ token
Ấn bản thứ 2 của cuốn sách này là từ năm 1988 và tôi còn khá mới đối với C. Có lẽ nó liên quan đến phiên bản biên dịch hoặc có lẽ tôi chỉ đang nói những điều vô nghĩa.
Tôi đã thấy trong mã C hiện đại một cách sử dụng khác của main
hàm:
int main()
{
/* code */
return 0;
}
Đây có phải là một tiêu chuẩn mới hay tôi vẫn có thể sử dụng một main không loại?
|| c = '\t')
. Điều đó có vẻ giống với mã khác trên dòng đó?