The parameter is not 'omitted' in that sense that the function can determine it. When the function is called without the second parameter the default value is used.
What you can do is using two function with the same name but different paramters.E.g.:
1 2 3 4 5 6 7 8 9
bool a_function(char* b, size_t len) { // Note: no default paramter
// ...
}
bool a_function(char* b) { // Note: no second parameter
return a_function(b, strlen(b)); // Calls the function above
}