|
|
|
|
|
by brongondwana
2144 days ago
|
|
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). |
|