Messages in this thread | | | Date | Thu, 10 Nov 2005 11:28:27 -0800 (PST) | From | Vadim Lobanov <> | Subject | Re: typedefs and structs |
| |
On Thu, 10 Nov 2005, Kyle Moffett wrote:
> On Nov 10, 2005, at 08:27:18, Nikita Danilov wrote: > > extern declaration in your version of bar() cannot refer to the > > automatic variable myvar in foo(). > > int foo;
Except foo is not an automatic variable within show(). When the variable is global, then there's no argument. It was a question of when foo is local and bar() would get a const pointer to the local.
> void bar(const int *local_var) { > foo = *local_var + 1; > } > > void show(void) { > printf("%d\n", foo); > bar(&foo); > printf("%d\n", foo); > } > > If GCC thought it could arbitrarily cache anything it wanted to, then > code like this would die. There is a whole mess of code in GCC > designed specifically to watch for and avoid aliasing issues like these. > > Cheers, > Kyle Moffett > > -- > Debugging is twice as hard as writing the code in the first place. > Therefore, if you write the code as cleverly as possible, you are, by > definition, not smart enough to debug it. > -- Brian Kernighan > >
-Vadim Lobanov - 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/
| |