В чем разница между volatile и extern?

Несколько дней назад у меня было интервью, но я все еще ищу ответ. Я хотел бы понять важность использования ключевого слова volatile.

Найдите код ниже: Два разных сценария.

//project1
//File1.c

int abc;//Global variable
/*And this variable is getting used in some other files too.*/
if(abc == 3) //Say
{
  printf("abc == 3");
}
else
{
  printf("abc != 3");
}
/*So if or else part will not be optimized 
because "abc" can not be predicted, 
the value can chage at any point of time */




//Project2
//file1.c

volatile int abc;//Global variable with volatile keyword

/*And this variable is getting used in some other files too.*/

if(abc == 3) //Say
{
  printf("abc == 3");
}
else
{
  printf("abc != 3");
}
/*So if or else part will not be optimized 
because "abc" can not be predicted as it is declared as volatile,
the value can chage at any point of time */

Почему вместо этого мы должны использовать ключевое слово volatile?

5
задан Coren 14 March 2012 в 09:00
поделиться