Posix limits macro names to nonempty strings containing only
ASCII letters and digits, ‘.’, and ‘_’. Many
make
implementations allow a wider variety of characters, but
portable makefiles should avoid them. It is portable to start a name
with a special character, e.g., ‘$(.FOO)’.
Some ancient make
implementations don’t support leading
underscores in macro names. An example is NEWS-OS 4.2R.
$ cat Makefile _am_include = # _am_quote = all:; @echo this is test $ make Make: Must be a separator on rules line 2. Stop. $ cat Makefile2 am_include = # am_quote = all:; @echo this is test $ make -f Makefile2 this is test
However, this problem is no longer of practical concern.