const question

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Jacob Erlbeck jerlbeck at sysmocom.de
Tue Jan 26 16:25:16 UTC 2016


Hi,

On 26.01.2016 15:01, Neels Hofmeyr wrote:
> my attention was directed at the gprs_shift_v_fixed() function:
> 
>   int gprs_shift_v_fixed(uint8_t **data, size_t *data_len,
>                          size_t len, uint8_t **value)
> 
> It advances the *data pointer and returns a *value pointer.
> So it could technically be consting much more aggressively.

Yes it could if it was about plain information extraction. But these
functions are used to get pointers to modifiable parts of the data for
later patching.

So ideally there were two functions, one like the above, and another
with the signature
  gprs_shift_v_fixed_const(const uint8_t **data, size_t *data_len,
                         size_t len, const uint8_t **value)

Yes, C is not optimal for providing such a family of functions.

> However, the compiler warnings confuse me.
[...]
>   check.c: In function ‘main’:
>   check.c:10:14: warning: passing argument 1 of ‘func’ from incompatible pointer type
>            func(&yy);
>                 ^
>   check.c:1:6: note: expected ‘const int **’ but argument is of type ‘int **’
>    void func(const int **yyy)
> 
> Changing yy to a pointer-to-const-int clears the warning:
> 
>           const int *yy = y;
>           func(&yy);
[...]

> 
> I just want to declare the underlying int data to be unchangeable by func(),
> not caring whether the caller passes a const int or a mutable int buffer.
> 
> Is the compiler merely nitpicking or am I getting something wrong
> fundamentally?

Perhaps
http://stackoverflow.com/questions/28062095/pass-a-two-dimensional-array-to-a-function-of-constant-parameter
sheds some light on that.

Jacob


-- 
- Jacob Erlbeck <jerlbeck at sysmocom.de>       http://www.sysmocom.de/
=======================================================================
* sysmocom - systems for mobile communications GmbH
* Alt-Moabit 93
* 10559 Berlin, Germany
* Sitz / Registered office: Berlin, HRB 134158 B
* Geschaeftsfuehrer / Managing Directors: Holger Freyther, Harald Welte



More information about the OpenBSC mailing list