I am reading the document of GNU Make. Here is an example

> 
> %.d: %.c
> 
> 
> 
> ```
>     @set -e; rm -f $@; \
> 
>      $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
> 
>      sed ’s,\($*\)\.o[ :]*,\1.o $@ : ,g’ < $@.$$$$ > $@; \
> 
>      rm -f $@.$$$$
> 
> ```
> 
> 

I tried this on a C++ program, and got the list of files

> 
> init3d.d init3d.d.18449 input.d input.d.18444 main.d main.d.18439
> 
> 
> 

Here is what I found but don't understand in the same [document](https://www.gnu.org/software/make/manual/html_node/Rule-Syntax.html)

> 
> If you have enabled secondary expansion and you want a literal dollar sign in the prerequisites list, you must actually write four dollar signs (‘$$$$’).
> 
> 
> 

I wonder what the four dollar signs "$$$$" mean actually? How do they 18449, 18444 or 18439?

Thanks and regards!