Oldukça az sayıda oluşturulmuş işleve sahip olduğum ve bunları oluşturduğum bazı genel işlevlerde belirtmek istediğim bir durum var (temel kodun yeniden kullanılmasına izin vermek için). oluşturulan işlev adları. Bu üretilinceC Oluşturulan işlev adları için işlemci ön tanımlı tanımlama
void Callback_SignalName1(void);
void Callback_SignalName2(void);
...etc
, onları jenerik olarak izin vermek için bir makro tanımlamak eder: aşağıdaki gibi
Aslında, fonksiyon isim listesini sahiptir. Benim fikrim bu, ama makro olarak tanımlanır ne C öncesi işlemci makro adını yerine sürer ... uygulamadan herhangi şansları olmadı:
#define SIGNAL1 SignalName1
#define SIGNAL2 SignalName2
#define FUNCTION_NAME(signal) (void Callback_ ## signal ## (void))
...
...
FUNCTION_NAME(SIGNAL1)
{
..
return;
}
sorunu Ben iyi bir yol bu çevrede var mı
void Callback_SIGNAL1(void)
yerine
void Callback_SignalName1(void)
ait alıyor olmasıdır?
örn:
olmamalı #define FUNCTION_NAME (funcname) void işlev_ismi (void)? –
Üzgünüz, biraz daha açıklık için düzenlenmiş ... Orada fonksiyon isminin başka bir parçası olduğunu önemli bir parçası dışarıda bıraktım ... – espais
## "signal" ve "(void)" arasında olduğunu unutmayın. Doğru değil. ## birden fazla jetonu birleştirerek tek bir jeton oluşturmak içindir. Açık parantez, işlev adı olacak belirtinin parçası olamaz (ve olmamalıdır!). –