Путаница здесь - это различие между определением полного метода (функции), которое включает (что в C будет) заголовок метода / функции и тело метода / функции. Заголовок - это имя метода с любыми формальными параметрами, а тело метода - это код, который выполняется при вызове метода.
В вашем примере вы копируете полный метод и выполняете его, как если бы это был просто блок кода. Таким образом, то, что является законным в начале блока кода, не в начале. Компилятор считает, что вы «отправляете сообщение № |» что незаконно.
Если вы не укажете имя метода (заголовок функции), тогда блок кода начинается с вертикальной черты (трубы), что является допустимым синтаксисом для объявления переменных.