3DCoat  3D-COAT 4.9.xx
3DCoat is the one application that has all the tools you need to take your 3D idea from a block of digital clay all the way to a production ready, fully textured organic or hard surface model.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
"C++" и "##"

Одна из частых ошибок при компиляции "3DCoat" это использование в макросах двойных диезов вместо пробела для объединения строк.

"##" - concatenate tokens

#define local_assign(x, y) local##x = y
int local7;
local_assign(7, 100);
// local7 == 100

"#" - convert argument to string

#define make_string(x) #x
cStr S = make_string(some string);
// S == "some string"

"space" - concatenate strings

#define append_string(x) "prefix" x
cStr S = append_string("suffix");
// S == "prefixsuffix"

Space is required, because "C++11 requires a space between literal and identifier".