What are the different versions of exec used for in C and C++?

The differences are combinations of: L vs V: whether you want to pass the parameters to the exec’ed program as L: individual parameters in the call (variable argument list): execl(), execle(), execlp(), and execlpe() V: as an array of char* execv(), execve(), execvp(), and execvpe() The array format is useful when the number of parameters … Read more

Why are hexadecimal numbers prefixed with 0x?

Short story: The 0 tells the parser it’s dealing with a constant (and not an identifier/reserved word). Something is still needed to specify the number base: the x is an arbitrary choice. Long story: In the 60’s, the prevalent programming number systems were decimal and octal — mainframes had 12, 24 or 36 bits per byte, which is nicely divisible by 3 = … Read more

Mapping a numeric range onto another

Let’s forget the math and try to solve this intuitively. First, if we want to map input numbers in the range [0, x] to output range [0, y], we just need to scale by an appropriate amount. 0 goes to 0, x goes to y, and a number t will go to (y/x)*t. So, let’s reduce your problem to the above simpler problem. … Read more

How to compile makefile using MinGW?

Excerpt from http://www.mingw.org/wiki/FAQ: What’s the difference between make and mingw32-make? The “native” (i.e.: MSVCRT dependent) port of make is lacking in some functionality and has modified functionality due to the lack of POSIX on Win32. There also exists a version of make in the MSYS distribution that is dependent on the MSYS runtime. This port operates … Read more

Static linking vs dynamic linking

Dynamic linking can reduce total resource consumption (if more than one process shares the same library (including the version in “the same”, of course)). I believe this is the argument that drives it its presence in most environments. Here “resources” includes disk space, RAM, and cache space. Of course, if your dynamic linker is insufficiently flexible there is … Read more

char pointers: invalid conversion from ‘char*’ to ‘char’?

Dealing with char, char*, and char [] in C is a little confusing in the beginning. Take a look at the following statements: The first statement and the second statement are identical in their behavior. After the first statement is executed, str1 points to a location that contains 4 characters, in consecutive order. If you … Read more