Why is volatile needed in C?

volatile tells the compiler not to optimize anything that has to do with the volatile variable. There are at least three common reasons to use it, all involving situations where the value of the variable can change without action from the visible code: When you interface with hardware that changes the value itself; when there’s … Read more

What are .a and .so files?

Archive libraries (.a) are statically linked i.e when you compile your program with -c option in gcc. So, if there’s any change in library, you need to compile and build your code again. The advantage of .so (shared object) over .a library is that they are linked during the runtime i.e. after creation of your … Read more

Why does sizeof(x++) not increment x?

From the C99 Standard (the emphasis is mine) 6.5.3.4/2 The sizeof operator yields the size (in bytes) of its operand, which may be an expression or the parenthesized name of a type. The size is determined from the type of the operand. The result is an integer. If the type of the operand is a … Read more

How to initialize a struct in accordance with C programming language standards

In (ANSI) C99, you can use a designated initializer to initialize a structure: MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 }; Other members are initialized as zero: “Omitted field members are implicitly initialized the same as objects that have static storage duration.” (https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html)

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)