Компиляция и связывание этого файла приводит к выполнению 1-KiB:
#pragma comment(linker, "/Entry:mainCRTStartup") // No CRT code (reduce size)
#pragma comment(linker, "/Subsystem:Console") // Needed if avoiding CRT
#define STRINGIFIER(x) func##x
#define STRINGIFY(x) STRINGIFIER(x)
#define G int STRINGIFY(__COUNTER__)(void) { return __COUNTER__; }
int mainCRTStartup(void) { return 0; } // Does nothing
#if 0
// Every `G' generates a new, unused function
G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G
G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G
#endif
Когда вы меняете #if 0
на #if 1
), размер вывода удваивается до 2 KiB.
Кажется, что это происходит со всеми версиями Visual С++ на сегодняшний день, хотя мои параметры командной строки содержат все оптимизации, о которых я мог подумать:
/Ox /MD /link /fixed /OPT:ICF /OPT:REF
и, в частности, я не содержал никакой отладочной информации.