On Fri, 2013-08-09 at 10:40 -0700, Stephen Hemminger wrote:
On Fri, 9 Aug 2013 14:39:06 -0300 Fabio Estevam festevam@gmail.com wrote:
On Fri, Aug 9, 2013 at 2:31 PM, Mark Brown broonie@kernel.org wrote:
From: Mark Brown broonie@linaro.org
Ensure that the definition of ax88172a_info matches the declaration seen by users and silence sparse warnings about symbols without declarations in the global namespace by moving the declaration into the shared header asix.h.
Signed-off-by: Mark Brown broonie@linaro.org
drivers/net/usb/asix.h | 2 ++ drivers/net/usb/asix_devices.c | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/usb/asix.h b/drivers/net/usb/asix.h index 346c032..bdaa12d 100644 --- a/drivers/net/usb/asix.h +++ b/drivers/net/usb/asix.h @@ -178,6 +178,8 @@ struct asix_common_private { struct asix_rx_fixup_info rx_fixup_info; };
+extern const struct driver_info ax88172a_info;
You could drop the 'extern' here.
All other function prototypes in this header file do not use 'extern'.
That is data, not function prototype, so yes extern is needed.
And this kind of contradictions show why extern declarations make sense in include files, for text or/and data.
Some compiler folk decided 'extern' were not mandatory for code, but its really adding confusion and endless discussions.