すいませんホントにくだらない質問なので申し訳ないのですが
マクロについて聞かせてください。

#define GET_FRAGMENT_PARAM(name) \
myCgFragmentParam_##name = \
cgGetNamedParameter(myCgFragmentProgram, #name); \
checkForCgError("could not get " #name " parameter");

このようなマクロがあったときに \ で複数行にすることはわかったのですが
その後の##nameと#nameの違いと意味について教えてください。