On 22/11/14 10:47, Werner LEMBERG wrote:
> 
>> Out of curiosity, why did you prefer this:
>>
>>   +#if defined(__MSDOS__) || (defined(_WIN32) && !defined(__CYGWIN__))
>>   +void normalize_for_lf (string &fn)
>>   +{
>>   +  int fnlen = fn.length();
>>   +  for (int i = 0; i < fnlen; i++) {
>>   +    if (fn[i] == '\\')
>>   +      fn[i] = '/';
>>   +  }
>>   +}
>>   +#else
>>   +void normalize_for_lf (string &)
>>   +{
>>   +}
>>   +#endif
>>
>> to my original change:
>>
>>   +void normalize_for_lf (string &fn)
>>   +{
>>   +#if defined(__MSDOS__) || (defined(_WIN32) && !defined(__CYGWIN__))
>>   +  int fnlen = fn.length();
>>   +  for (int i = 0; i < fnlen; i++)
>>   +    {
>>   +      if (fn[i] == '\\')
>>   +       fn[i] = '/';
>>   +    }
>>   +#endif
>>   +}
> 
> With your version, I get a warning about an unused variable `fn' if
> not compiling for MS.  The standard C++ solution to suppress this
> warning is to simply omit the parameter's name in the function's
> signature, and exactly this I've done in my version.

I might have been inclined to replace the prototype declaration, for the
non-MS case, with a null macro:

    :
  #else
  # define normalize_for_lf(S)
  #endif

so that you also avoid the call overhead, at point of use.

-- 
Regards,
Keith.

Reply via email to