2017-04-20 91 views
0

我需要一個特殊的包含文件(本質上是一個非常日誌列表中的名稱)包含在我的代碼的中間(我不能讓列表成爲任何結構的一部分)。它的作品,但它看起來很難看:包含#include指令到宏

<code>; 
#include <big_list.inc> 
    <more-code>; 

是否可以定義一些宏來包含此文件,我覺得這看起來會更好。

#define BIG_LIST_INC() ... 

    <code>; 
    BIT_LIST_INC(); 
    <more_code>; 
+0

您可能還會考慮[this](http://stackoverflow.com/questions/40062883/how-to-use-a-macro-in-an-include-directive) – AndyG

+0

我寧願在旁邊放一條評論它。將'#include'隱藏在另一個宏後面並不會讓它更容易閱讀imho – user463035818

+0

將它放到另一個文件中,幷包含它? – alk

回答

2

更改您的內容,包括文件:

#define BIG_LIST_INC ... 

其中...是文件的當前內容(如果它跨越多行,不要忘了結尾的行與\)。

然後在源代碼文件的頂部文件,並可以插入使用BIG_LIST_INC代碼在大名單:

#include "big_list.h" 

// <code> 
BIG_LIST_INC 
// <more_code> 
+0

在我看來,在這種情況下,所有大的列表定義將在預處理器運行後在一行上,列表很大,我恐怕要限制行長。這將是完美的解決方案,如果列表項將被放置在單獨的行 – zzz777

+0

@ zzz777:如答案中所述,宏的可以使用\換行符字符跨越多行 –

+0

據我瞭解,預處理整個列表後將在一條線上。 – zzz777

0

這或許會對用3替換此選項包括指令

#include "pre_macro_stuff.h" 
#include <big_list.inc> 
#include "post_macro_stuff.h" 

凡pre_macro_stuff.h和post_macro_stuff.h包含宏。