-Wall: enable a set of warning, actually not all.
-W: enable extra warning, it is asvised to use -Wextra instead which has the same meaning.
-Werror: every warning is treated as an error.
-Wno-error: wanring will not treated as error.
-Wno-unused: enable all warning except unused warning.