相关疑难解决方法(0)

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

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

#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)

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

c macros include c-preprocessor

1
推荐指数
1
解决办法
1661
查看次数

标签 统计

c ×1

c-preprocessor ×1

include ×1

macros ×1