If you want to write a portable C program, you have to be careful not to give your own definitions to any of the identifiers that are reserved by the C standard. The standard tells you which identifiers are reserved, but scatters the information through a rather thick (and expensive) book.
The basic principles of reserved identifiers are in ISO subclause 7.1.3 (ANSI section 184.108.40.206), "Reserved Identifiers". There you are warned:
if a program declares or defines an identifier with the same name as an identifier reserved in that context .., the behavior is undefined.
That means that if your program contains a statement like "extern int log;", the compiler is fully justified in turning your terminal into a large wart hog. Yes, the standard allows (3.16/1.6) such behavior, though market forces (and the laws of physics!) might not support it. More realistically, your program may or may not work right, and you may or may not get a diagnostic message.
This page is descripte mostly identifiers which you should not use in C program.