Итак, будучи обученным Джеймсом Канзе и Локи Астари о C linkage, мне было интересно:
extern "C" int foo1 (void (*)());
extern "C" { int foo2 (void (*)()); }
После моего обучения, я думаю, должно быть, что foo1
использует только указатель на функцию с С++ linkage, а foo2
принимает только указатель на функцию с C-связью. Правильно ли я понимаю? Существуют ли конкретные ссылки в стандарте С++, которые объясняют различия в моем примере выше?
Изменить: Чтобы упростить для всех возможность следовать здесь pastebin с соответствующей частью из стандартного проекта С++ 11.