The macro has the drawback that one cannot determine what type it applies to by looking at the definition. Hence this macro definition is not type-safe. The inline function gives the same benefits as the macro and only accepts the specific type of arguments. Use static because the definition only requires it to be visible in the current file. Signed-off-by: Sumitra Sharma <sumitraartsy@xxxxxxxxx> --- drivers/staging/nvec/nvec_paz00.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/staging/nvec/nvec_paz00.c b/drivers/staging/nvec/nvec_paz00.c index 8b4da95081c8..9573ba762cdd 100644 --- a/drivers/staging/nvec/nvec_paz00.c +++ b/drivers/staging/nvec/nvec_paz00.c @@ -14,8 +14,10 @@ #include <linux/platform_device.h> #include "nvec.h" -#define to_nvec_led(led_cdev) \ - container_of(led_cdev, struct nvec_led, cdev) +static inline struct nvec_led *to_nvec_led(struct led_classdev *led_cdev) +{ + return container_of(led_cdev, struct nvec_led, cdev); +} #define NVEC_LED_REQ {'\x0d', '\x10', '\x45', '\x10', '\x00'} -- 2.25.1