vpillai
vpillai

Reputation: 473

volatile variables in C

What happens if I declare all variables in my C code to be volatile?

As far as I know the implementation of how volatile is honored is implementation specific and the bottom-line is that the compiler cannot trust any copies of the variable it might have . Consequently, the program might be larger in size and run slower if I am to declare all variables as volatile.

Are there any other problems if I do that?

Upvotes: 1

Views: 253

Answers (1)

rodrigogq
rodrigogq

Reputation: 1953

You should concern if you are developing drivers that read flags from control registers or pointing to that location.

Some of these register has special properties, as clearing or setting other flags just by reading them. Then using volatile would just destroy your code.

I don't think it is a good idea to declare all variables as volatile. Two of the reasons were already given: bigger code and running slower.

Worse than that is not thinking. You will be last and final professional who will look at some place and making proper programming to prevent running conditions to destroy your code. Declaring all as volatile will only postpone this to a bug you won't be able to track in the future.

Declare volatile for:

  • Shared variables
  • Optimizing your code via compilers (for old compilers... Nowadays they are pretty good already for not allowing bugs when optimizing.. But need to be explicit anyway)
  • Multithreading shared variables

Upvotes: 2

Related Questions