Saturday, 30 September 2017

c - "static const" vs "#define" vs "enum"



Which one is better to use among the below statements in C?




static const int var = 5;


or



#define var 5


or




enum { var = 5 };

Answer



Generally speaking:



static const


Because it respects scope and is type-safe.




The only caveat I could see: if you want the variable to be possibly defined on the command line. There is still an alternative:



#ifdef VAR // Very bad name, not long enough, too general, etc..
static int const var = VAR;
#else
static int const var = 5; // default value
#endif



Whenever possible, instead of macros / ellipsis, use a type-safe alternative.



If you really NEED to go with a macro (for example, you want __FILE__ or __LINE__), then you'd better name your macro VERY carefully: in its naming convention Boost recommends all upper-case, beginning by the name of the project (here BOOST_), while perusing the library you will notice this is (generally) followed by the name of the particular area (library) then with a meaningful name.



It generally makes for lengthy names :)


No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...