1 1.4 rillig /* $NetBSD: msg_351.c,v 1.4 2023/04/25 19:00:57 rillig Exp $ */ 2 1.1 rillig # 3 "msg_351.c" 3 1.1 rillig 4 1.4 rillig // Test for message 351: missing%s header declaration for '%s' [351] 5 1.1 rillig 6 1.4 rillig /* 7 1.4 rillig * Warn about variable definitions or function definitions that are visible 8 1.4 rillig * outside the current translation unit but do not have a previous 9 1.4 rillig * declaration in a header file. 10 1.4 rillig * 11 1.4 rillig * All symbols that are used across translation units should be declared in a 12 1.4 rillig * header file, to ensure consistent types. 13 1.4 rillig * 14 1.4 rillig * Since the storage class 'extern' is redundant for functions but not for 15 1.4 rillig * objects, omit it for functions. 16 1.4 rillig * 17 1.4 rillig * https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wmissing-declarations 18 1.4 rillig */ 19 1.4 rillig 20 1.4 rillig /* expect+1: warning: missing header declaration for 'implicitly_extern_function' [351] */ 21 1.1 rillig void implicitly_extern_function(void); 22 1.4 rillig /* expect+1: warning: missing header declaration for 'explicitly_extern_function' [351] */ 23 1.1 rillig extern void explicitly_extern_function(void); 24 1.1 rillig 25 1.4 rillig /* expect+1: warning: missing 'extern' header declaration for 'definition' [351] */ 26 1.1 rillig int definition; 27 1.4 rillig /* expect+1: warning: missing 'extern' header declaration for 'reference' [351] */ 28 1.1 rillig extern int reference; 29 1.1 rillig /* expect+1: warning: static variable 'file_scoped_definition' unused [226] */ 30 1.1 rillig static int file_scoped_definition; 31 1.1 rillig 32 1.1 rillig 33 1.1 rillig # 18 "header.h" 1 3 4 34 1.1 rillig static int static_def; 35 1.1 rillig int external_def; 36 1.1 rillig extern int external_ref; 37 1.1 rillig 38 1.1 rillig static int static_func_def(void); 39 1.1 rillig int extern_func_decl(void); 40 1.1 rillig extern int extern_func_decl_verbose(void); 41 1.1 rillig 42 1.1 rillig # 29 "msg_351.c" 2 43 1.1 rillig /* expect+1: warning: static variable 'static_def' unused [226] */ 44 1.1 rillig static int static_def; 45 1.1 rillig int external_def; 46 1.1 rillig extern int external_ref; 47 1.1 rillig 48 1.1 rillig /* expect+1: warning: static function 'static_func_def' declared but not defined [290] */ 49 1.1 rillig static int static_func_def(void); 50 1.1 rillig int extern_func_decl(void); 51 1.1 rillig extern int extern_func_decl_verbose(void); 52 1.2 rillig 53 1.4 rillig /* expect+1: warning: missing 'extern' header declaration for 'dbl_ptr' [351] */ 54 1.2 rillig double *dbl_ptr = &(double) { 0.0 }; 55