Hacker News new | past | comments | ask | show | jobs | submit login

I mean... my first reading of that is "what a dumb idea, the reason it isn't const is that there are legit reasons to switch userid".

But then I have used exactly this pattern, and it looks something like:

struct protected_stuff { int userid; ... };

void set_userid(const struct protected_stuff prot, int newuserid) { struct protected_stuff backdoor = (struct protected_stuff *)prot; backdoor->userid = newuserid; }

and then the compiler complains if you go fiddling with userid outside this function where you deliberately opened a backdoor to write to it. (and you can wrap pragmas around that function to turn off warnings).




Compilers will produce slower code for this construction.


If you're switching users in a hot loop you have other problems.


The nice thing is, it's a pretty rare call hopefully, so that's not a big deal so long as they aren't slowing down the much more common reads.


Yep... there are ways to make it happen.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: