10. May 2012 13:00
This is a quick tip in C++ for providing support for optional parameters on functions. This works because when a function is declared in C++ it can be given a default value and when that paramater is missing from the calling function the compiler will automatically add it during compile time and pass the default value.
Heres a simple example of this.
#include <stdio.h>
bool func(bool val = false) {
return val;
}
int main(int argc, char **argv) {
printf("%d\n", func());
printf("%d\n", func(false));
printf("%d\n", func(true));
return 0;
}
4f6282d2-ef6c-428d-ac2f-87e03cab67d2|0|.0
9. May 2012 23:21
It can be commonly known that you can do for loops in bash by doing something like for i in * ; do echo $i ; done or some such. This will loop for every file in the current directory. Though typical for loops for a specific number range can be a little more difficult since you need to form the data to be able to execute the loop.
To get a simple for loop to work we can copy python's for i in range(x, y): type of loop since the bash for loop is exactly the same as this. Both bash / python perform a for each loop around a list of data items rather than the traditional for loop with a counter. This can be used to our advantage since all you need to do is create a small program that generates this data lists.
The following c program does this.
#include <stdio.h>
#include <stdlib.h>
void print_usage(FILE *fp, char *app) {
fprintf(fp, "Usage: %s <start number> <end number>\n", app);
fprintf(fp, "\n");
}
int main(int argc, char **argv) {
int a = 0, b = 0;
int i;
if (argc < 3) {
print_usage(stderr, argv[0]);
exit(EXIT_FAILURE);
}
a = atoi(argv[1]);
b = atoi(argv[2]);
if (a >= b) {
int tmp = a;
b = a;
a = tmp;
}
for(i=a;i<=b;i++) {
printf("%d\n", i);
}
return 0;
}
All you need to do is put the program above into a c file and compile it with gcc (gcc -Wall range.c -o range) and place the executable on the path (eg in $HOME/bin). Then you can do for loops in the bash shell the following way.
for i in `range 0 20` ; do echo $i ; done
The above will of course produce the output of 0 to 20 on the terminal when run.
1c2e21a4-e464-413d-a365-9824a4c599bb|0|.0