The #ident directive takes one argument, a string constant. On some systems, that string constant is copied into a special segment of the object file. On other systems, the directive is ignored.
This directive is not part of the C standard, but it is not an official GNU extension either. We believe it came from System V.
The #sccs directive is recognized, because it appears in the header files of some systems. It is a very old, obscure, extension which we did not invent, and we have been unable to find any documentation of what it should do, so GCC simply ignores it.
The null directive consists of a # followed by a newline, with only whitespace (including comments) in between. A null directive is understood as a preprocessing directive but has no effect on the preprocessor output. The primary significance of the existence of the null directive is that an input line consisting of just a # will produce no output, rather than a line of output containing just a #. Supposedly some old C programs contain such lines.