Aracılığıyla paylaş


Belirteç yapıştırma işleci (#)

Çift sayı işareti ya da "token-yapıştırma" işleci (#), hangi "birleştirme" işleci adlandırılır nesne benzeri hem de işlev benzeri makrolar kullanılır.Bu tek bir belirteç katılması için ayrı belirteçleri verir ve bu nedenle ilk veya son belirteç makro tanımı olamaz.

Makro tanımında bir biçimsel parametre öncesinde veya belirteç yapıştırma operatörü tarafından izlenen, biçimsel parametre hemen unexpanded asıl bağımsız değişkeni tarafından değiştirilir.Makro genişleme bağımsız değişkeni için önce değiştirme yapılmaz.

Belirteç yapıştırma işleci de daha sonra her geçtiği token dizesi kaldırılır ve önceki ve onu izleyen belirteçleri birleşir.Elde edilen belirtecin geçerli bir simgesi olmalıdır.Öyleyse, makro adı temsil ediyorsa belirteci olası yerini taranır.Art arda eklenmiş simgeleri, değiştirme önce programda bilinecek adı tanımlayıcısını gösterir.Her belirteç başka bir yerde, programın içinden veya derleyici komut satırında tanımlanan bir belirteç gösterir.Operatöründen veya önceki boşluk isteğe bağlıdır.

Bu örnek program çıktısı belirterek, her iki stringizing ve belirteç yapıştırma işleçlerin kullanımı gösterilmektedir:

#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;

Makro gibi sayısal bir bağımsız değişken ile çağrılırsa

paster( 9 );

Makro üretir

printf_s( "token" "9" " = %d", token9 );

hangi haline gelir.

printf_s( "token9 = %d", token9 );

Örnek

// preprocessor_token_pasting.cpp
#include <stdio.h>
#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;

int main()
{
   paster(9);
}
  

Ayrıca bkz.

Başvuru

Önişlemci işleçleri