C编程:预处理器,包括宏的文件

Jos*_*eek 1 c macros include c-preprocessor

如果我能找到一种方法来做类似的事情,我可以在我的应用程序中删除数百行代码,并大大提高可维护性.有人有主意吗?

#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;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我很欣赏这些回复,我的例子似乎导致了误导,所以这就是我实际上要解决的问题:

我正在实现一个有限状态机.通过命名约定,我已经让它变得像添加状态一样简单:

  STATE(initial_screen)
    #include "initial_screen.state"
  END_STATE

  STATE(login)
    #include "login.state"
  END_STATE
Run Code Online (Sandbox Code Playgroud)

但是,如果我能回答原来的问题,我可以将其重构为简单的事情:

  ADD_STATE(initial_screen)
  ADD_STATE(login)
Run Code Online (Sandbox Code Playgroud)

这是因为文件名和状态名称以及所有底层连接和其他所有内容都遵循类似的约定.但是,我无法弄清楚如何根据宏中收到的令牌实现包含文件.

Amb*_*ber 7

为什么不创建一个头文件本身#include是库的所有其他头文件?然后,对于每个库,您只需包含该库的一个元标题.