#define FOO(val) \
({ \
int b = val; \
printf("First, let's count to %d\n", val); \
for (int i = 1; i <= val; i++) { \
printf("%d...\n", i); \
} \
b++; \
b; \
})
int main() {
int a = FOO(6);
printf("a=%d\n", a);
a = (4); // straightforward, everyone should be familiar with this
a = (4;); // does not compile
a = { 4; }; // does not compile
a = ({ 4;}); // valid, a will equal 4
return 0;
}
Я пытаюсь Обращаю внимание на приведенный выше пример. Как и почему работает макрос FOO (последний оператор действует как возвращаемое значение)? Что касается синтаксиса, как называются отдельные части и какие другие правила применяются?