How to access a static variable from another file in C?

12,059

Solution 1

I don't think there is a easy way. If you can change the file with the static variable you can do something like:

static int hiddenVar; // The static var you want to get at

// A new function you write
int * getHiddenVar() {
   return &hiddenVar;
}

But of course if you can change the file, you would just drop the static keyword.

Also, I doubt this helps, but I've had to do something like this when writing a kernel module in FreeBSD. I used a trick where I called the kernel's linker functions to find the address of a static function. I doubt you can do this in a normal C program though.

Solution 2

Use the extern keyword in your declaration to specify that the variable comes from another file (external linkage). Drop the static keyword in your original definition.

The external vs. internal linkage thing is explained in this article.

Solution 3

You can only do this indirectly, e.g. if a function within the scope of the file containing the static variable passes you a pointer to it.

Share:
12,059
aks
Author by

aks

Updated on June 15, 2022

Comments

  • aks
    aks about 2 years

    Possible Duplicate:
    Static variable

    How to access a static variable from another file in C? As a Static variable has a file scope, I think there is no way we can access it outside a file. But still I feel there might be some trick or way to do the same.

  • Alok Singhal
    Alok Singhal over 14 years
    Umm. What? A variable that has both internal and external linkage?
  • Thorsten79
    Thorsten79 over 14 years
    I clarified the declaration vs. definition part.
  • Alok Singhal
    Alok Singhal over 14 years
    Now your answer is technically correct, but doesn't answer the question, unfortunately. The question itself isn't that good though.