【发布时间】:2009-11-20 02:51:05
【问题描述】:
如果我能找到一种方法来做类似的事情,我可以在我的应用程序中删减数百行代码,并显着提高可维护性。有人有什么想法吗?
#include <stdio.h>
int main( )
{
#define include_all_files(root) \
#include #root "1.h" \
#include #root "2.h" \
#include #root "3.h" \
#include #root "4.h"
include_all_files( first_library )
include_all_files( second_library )
include_all_files( third_library )
return 0;
}
编辑:
感谢您的回复,我的示例似乎导致了努力方向的错误,所以这是我实际尝试解决的问题:
我正在实现一个有限状态机。通过命名约定,我让添加状态变得如此简单:
STATE(initial_screen)
#include "initial_screen.state"
END_STATE
STATE(login)
#include "login.state"
END_STATE
但是,如果我可以回答最初的问题,我可以将其重构为以下简单的内容:
ADD_STATE(initial_screen)
ADD_STATE(login)
这是因为文件名和状态名,以及所有底层布线和其他所有内容都遵循类似的约定。但是,我不知道如何根据宏中收到的令牌来实现包含文件。
【问题讨论】:
-
编辑你的第一篇文章可能比添加 cmets 更好。
-
谢谢你,安德斯,我没有意识到我能做到这一点,我已经添加了编辑。
标签: c macros include c-preprocessor