0

#undef 可以减少编译时间吗?我有数千个宏和一个 250k 的函数,但它们最多需要 15 秒才能完全解析和编译。我应该这样写代码:

#define f_WM_SETFOCUS 0xF59EE0A2     
#define f_WM_KILLFOCUS 0xA4671283
#define f_WM_ENABLE 0x25A5D864

AddMacro('W', 'S',  f_WM_SETFOCUS, WM_SETFOCUS, ___INT);
AddMacro('W', 'S',  f_WM_KILLFOCUS, WM_KILLFOCUS, ___INT);
AddMacro('W', 'E',  f_WM_ENABLE, WM_ENABLE, ___INT);

#undef f_WM_SETFOCUS
#undef f_WM_KILLFOCUS
#undef f_WM_ENABLE

#define ...
4

1 回答 1

0

我想没有理由减少编译时间。由于这些宏一旦被读取,它们可能会一直保存在内存中(我的意思是编译)——但这完全取决于编译器,所以你可能只是给它一个机会看看会发生什么。

为了避免一直阅读这些宏,您可以做的事情是只将带有这些宏的文件包含到实现文件中,而不是任何头文件中(这可能是可能的)。这样,只有在实际使用这些宏时才会读取该文件(这意味着仅在使用它的编译单元中)。

HTH。

PS。无论如何,15 秒的编译时间并没有那么长;)

于 2013-05-26T08:55:15.387 回答