what is difference b/w extern & volatile variable??
Answers were Sorted based on User's Feedback
Answer / antonio leite
extern states that a variable is referenced in a module but
is declared in another module. This makes the linker not
generate an error/warning when the extern variable is
referenced but wait till the declaration is stated in a
module.
volatile states that the value of a variable can be changed
anywhere in the code. This is used by the optimizer to know
that a piece of code must not be optimized when a volatile
variable is found. For example, when a variable is changed
by a interrupt timer it must be declared volatile. The code
seems to be always true because Timer_xpto seems to be
always > 0. If the code is optimized, the if would simply
disapper from the code, but this is not what the programmer
wants, so declare
extern volatile unsigned long Timer_xpto;
so that the compiler will never optimize the code below.
Timer_xpto = 100;
do something
if (Timer_xpto > 0 )
{
do any other thing
}
Here extern is stating that the variable is declared in
other module and volatile that the code where the
Timer_xpto appears must not be optimized.
See http://www.eetimes.com/discussion/programming-
pointers/4025609/Place-volatile-accurately
| Is This Answer Correct ? | 13 Yes | 0 No |
Answer / sathya
extern keyword is used to strike the global declaration.
but volatile its indirectly change the values in externally
| Is This Answer Correct ? | 5 Yes | 1 No |
Answer / mchilakala
Extern keyword specifies that the variable had been
declared globally where as volatile keyword specifies that
there is a chance of changing it's value by external
conditions.
Ex:
if we declare a variable as
"Volatile date=03/08/2011"
then output is 03/08/2011
then after one day the output will change to 04/08/2011.
| Is This Answer Correct ? | 3 Yes | 0 No |
Answer / anonimos
volatile variables are used on RT Embedded systems to
interface a physical memory mapped/IO mapped cell on the
computer board (volatile pointer).
Example define IO port:
#define PortA (*(volatile unsigned char *)0x3b)
unsigned char inputValue=PortA;
optimization may attempt to perform paging to hard drive of
to cache or even CPU registers so when reading from the
physical location in Mem/IO space the program will actually
read old value that was paged/cached by optimization
algorithm of the computer/board, even after the Input
changed on this Memory/IO cell.
volatile instruct the compiler to prevent optimization by
caching to registers/cache.
| Is This Answer Correct ? | 1 Yes | 0 No |
Answer / deepa
extern is a keyword used to declare variables as global
varible.volatile variables are temporary variable
| Is This Answer Correct ? | 1 Yes | 7 No |
main() { int i = 10; printf(" %d %d %d ", ++i, i++, ++i); }
2.Given the short c program that follows a. make a list of the memory variables in this program b.which lines of code contain operations that change the contents of memory? what are those operations? Void main( void) { Double base; Double height; Double area; Printf(“enter base and height of triangle :”); Scanf(“%lg”, &base); Scanf(“%lg”, &height); Area=base*height/2.0; Printf(“the area of the triangle is %g \n”,area); }
How can I open a file so that other programs can update it at the same time?
What does the function toupper() do?
A program to allow an input operand and operator from the operator and read on the display and output operand.
What is actual argument?
What is difference between union and structure in c?
#include<stdio.h> #include<conio.h> void main() { char ch='\356'; printf("%d",ch); } o/p=-18 why?plz.explain
How to swap 3 numbers without using 4th variable?
Which built-in library function can be used to match a patter from the string?
Program to find the value of e raised to power x using while loop
#include<stdio.h> main() { char *p1; char *p2; p1=(char *) malloc(25); p2=(char *) malloc(25); strcpy(p1,"Ramco"); strcpy(p2,"Systems"); strcat(p1,p2); printf("%s",p1); } Tell me the output?