Some compilers accept the following non-ANSI compliant statement to declare an array with an unknown size:
extern char buf[0];
However, the compiler issues an error message for this because an object with size zero (even if declared as extern) is illegal. Use the legal version:
extern char buf[];