lkml.org 
[lkml]   [2002]   [Jan]   [3]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
From"" <>
SubjectRe: Extern variables in *.c files (maintainers pls read this)
DateThu, 3 Jan 2002 22:28:55 -0200
> So, you have a choice:
> 1. Enable -fno-common
>    - detect variables that should be marked static which aren't
>    - don't detect size differences
> 2. Disable -fno-common
>    - don't detect variables that should be marked static
>    - detect size differences as long as the variables aren't marked extern
>
> As soon as someone has int foo in one file, and extern char foo in another,
> you've lost no matter which option you take.
>
> The header file approach is the most reliable (and imho correct) method to
> solve this problem.

And this method is traditional for C. We have struct declarations and fn 
propotypes in *.h, we should place extern vars there too. Always.

If you are a kernel subsystem or driver maintainer, you may wish to check 
whether *your* part of kernel has any extern variable defs. Just run this
hunter script in top dir of kernel source:
-----------------------
#!/bin/sh
function do_grep() {
    pattern="$1"
    dir="$2"
    shift;shift
    for i in $dir/$*; do
        if ! test -d "$i"; then
            if test -e "$i"; then
		grep -E "$pattern" "$i" /dev/null
	    fi
        fi
    done
    for i in $dir/*; do
        if test -d "$i"; then
	    do_grep "$pattern" "$i" $*
	fi
    done
}
do_grep 'extern [^()]*;' . "*.c" 2>&1 | tee ../extern.log
---------------------------------
Output is not attached here, it's too big: ~100 KB, ~1500 lines for 2.5.1-pre8
--
vda
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:15    [W:0.180 / U:0.620 seconds]
©2003-2008 Jasper Spaans