2017-06-06 65 views
0

我目前正在編寫一個頭文件,以便於處理我的外部庫文件。在預處理器中添加兩個字符串

下面是最少的代碼:

#pragma once 

#define STR_HELPER(x) #x 
#define STR(x) STR_HELPER(x) 

#define EXTERNAL_PATH STR(C:/C++ Libraries/) 

#define LUA_PATH  EXTERNAL_PATH STR(lua 5.3.4/) 
#define LUA_INCLUDE  LUA_PATH  STR(include/) 

所以基本上,我包括此頭和寫類似

#include LUA_INCLUDE (add this two strings) "lua.hpp" 

我怎樣才能在預處理器連接在一起的兩個字符串?

回答

1

你是在找##?並且不要過早地將宏參數串起來,因爲那樣就沒有辦法回來了。

實施例:

#define MY_QUOTE(a) #a 

#define CONCAT_QUOTE(a,b) MY_QUOTE(a##b) 

#define CONCAT(a,b) a##b 

// this works OK 
#include CONCAT(<iostrea, m>) 


// this doesn't as iostream should be just in <> rather than "<>" 
#include CONCAT_QUOTE(<iostrea, m>)