2016-07-04 6 views
1
MACRO

にLプレフィックスを追加します。どうやってするの?私は</p> <pre><code>#define STRING "string" </code></pre> <p>持って、私は(私が定義でそれを行うことはできません)私のコードの後半でSTRINGマクロにLプレフィックスを追加する方法

+0

テキスト置換のマクロ作品を、そして次のとおりです。

#include <stdio.h> #define CONCATENATE(e1, e2) e1 ## e2 #define PREFIX_L(s) CONCATENATE(L, s) #define STRING "string" int main(void) { printf("%ls\n", PREFIX_L(STRING)); } 

これらの標準Cプリプロセッサの連結機能はまた、GCCに来ドキュメントで覆われていますコンパイル時のメカニズム。実行時に、いつでも変更することはできません。 –

+0

あなたは知っています。多分それは重複ではない。 **正確に** ** * Lプレフィックスを追加することを意味しますか? – StoryTeller

答えて

4

これは、実行する必要があります。https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

+1

これはgcc機能ではありませんが、標準です。 – Olaf

+0

@Olaf:私の知るところですが、このページはGCCのドキュメントを参照しています...:} – alk

+0

@Olaf:これでdownvoteしていませんでしたか? | - ) – alk

-1

これは動作するはずです。

#define STRING(x) x"string" 

char * l_pString = STRING(""); 
wchar_t * l_pWideString = STRING(L); 
+0

これは正しく構築されていません。 http://ideone.com/xIn2Br マクロパラメータを省略することはできません。 – StoryTeller

+0

@StoryTellerまで追加すると、最初のケースでは '' "を渡すだけです。 – alk

関連する問題