As you probably already know, a statement beginning with # in C/C++ code is a preprocessor directive. All the preprocessor directives get executed before the actual code starts to get compiled.
There are a lot of different directives that are standard, ie they are implemented in all standards-compliant compilers. #pragma is a directive that can have different meaning on different compilers. For instance, "#pragma once" in a header file is valid if you are compiling in MS VC++ (it makes sure the file only gets #included once, which can also be done with #ifdef and #define in standard code). Any #pragma directive is a compiler-specific directive.