__FILE__
и __LINE__
- это внутренние значения, определенные вашим компилятором, которые расширяются до скомпилированного файла и текущей строки (макрос расширяется в).
С макросами, когда вы говорите (например):
#define YOUR_MACRO(param1, param2) some_function_here(param1 + param2, 0)
вы определяете макрос с двумя параметрами param1
и param2
(в вашем случае есть только один параметр и его имя s
).Затем вы можете использовать эти параметры в своем определении макроса в любом случае.
Примечание: вы должны быть осторожны при написании макросов, так как они могут быть сложными.В приведенном выше примере, если вы вызовете:
YOUR_MACRO(x << 2, y << 2)
, он расширится до:
some_function_here(x << 2 + y << 2, 0);
, что на самом деле:
some_function_here(x << (2 + y) << 2, 0);
определенно не то, что вы имели в виду!Написание хороших макросов включает в себя множество скобок и, возможно, использование нестандартных функций вашего компилятора, чтобы сделать их безопасными.