Kısa bir süre önce C'deki küçük bir kişisel proje (BGR değeri dönüştürme programına RGB değeri) başlattım ve RGB'den BGR'ye dönüştüren bir fonksiyonun yalnızca dönüşümü değil, aynı zamanda dönüşümü de gerçekleştirebileceğini fark ettim. Açıkçası bu demek ki iki fonksiyona ihtiyacım yok rgb2bgr
ve bgr2rgb
. Ancak, bir makro yerine bir işlev işaretçisi kullanmam sorun olur mu? Örneğin: Meraktan öznel bir soru daha var olarakÖnişlemci "makro işlevi" ile işlev işaretçisi - en iyi uygulama?
int rgb2bgr (const int rgb);
/*
* Should I do this because it allows the compiler to issue
* appropriate error messages using the proper function name,
* not to mention possible debugging benefits?
*/
int (*bgr2rgb) (const int bgr) = rgb2bgr;
/*
* Or should I do this since it is merely a convenience
* and they're really the same function anyway?
*/
#define bgr2rgb(bgr) (rgb2bgr (bgr))
ben ille yürütme verimliliğinde bir değişiklik için aramıyorum. Tip güvenliğinin ne yöntemle ne de kayıp olduğu bilinmemektedir. Fonksiyon göstergesinin sadece bir kolaylık olması mı, yoksa habersiz olduğum daha pratik faydaları var mıdır?
Şahsen, her ikisini de kullanan bir isim ile geldim, int intap_rb() ';) – caf
@caf: Kesinlikle başka harika bir fikir. Bu tamamen sorunu önler, ancak mantıken sağlam bir alternatiftir. +1 – Dustin