On Fri, May 08, 2026 at 12:25:12PM -0400, Derek Martin wrote:
> This is on Ubuntu LTS 24.04.  Availability != ubiquity.  I expect gcc
> 15 won't be in widespread use for years yet.

$ rpm -q gcc
gcc-16.1.1-1.fc44.x86_64

That having been said, it's easily demonstrable that this gcc does
not convert strspn(s,"x") [where "x" is a single-character literal]
into a loop: it emits a call to strspn with a pointer to "x" in the
data section, even with -O3.  I certainly wouldn't expect it to optimize
strspn(s,x) where x is a variable.

As to which one is shorter and/or more readable (and noting that '/' is
not the nul character):

   while (*ptr == '/') ptr++;

   ptr += strspn(str, "/");

clearly the second one is shorter, but the first one is more obvious in
intent.  However, manual pages exist for readers who don't know what
strspn means.  I think it's hard to argue that the first one is more
likely to attract silly mistakes - there are few things more simple
than that line of code in any significant program.

Ian Collier.

Reply via email to