| Re: [AD] pack_fwrite and const |
[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]
In reply to Vincent Penquerc'h <vincent@xxxxxxxxxx>:
>(what use is const if you cast it away as soon as you
>get a const ptr ?)
If a function's parameter is declared `const', then the compiler can
assume certain optimisations. A trivial (C++) example:
// begin
#include <iostream>
void do_some_stuff(const int& a);
int main()
{
int x = 7;
do_some_stuff(x);
cout << x << endl;
}
// end
In this case, the compiler knows that the value of `x' remains constant
at 7 throughout main(), so it doesn't need to store `x' anywhere; it
just generates assembly instructions with a constant. This is obviously
quicker.
As to your patch, it would be good to commit this. There is no reason to
cast away the `const' qualifier, and doing so is a bad habit because use
of the qualifier provides optimised code and allows the compiler to
check for accidental writes. For instance, in the pack_fwrite()
function, consider the expression:
*(p++)
This reads the value at address p, and then increments p by one. But if
it was accidentally written as:
(*p)++
then we would increment the value at address p, and store it there. This
is an obvious error, and the compiler would catch it for us.
Bye for now,
--
Laurence Withers, lwithers@xxxxxxxxxx
http://www.lwithers.demon.co.uk/
Attachment:
signature.asc
Description: PGP signature
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |