What is the proper way to handle pointers in variable arguments list?
Simen Kjaeraas
simen.kjaras at gmail.com
Sun Oct 28 14:16:19 PDT 2012
On 2012-08-28 22:10, Tyro[17] <nospam at home.com> wrote:
> On 10/28/12 4:44 PM, Dmitry Olshansky wrote:
>> On 29-Oct-12 00:36, Tyro[17] wrote:
>>> The following fails because the compiler assumes I am trying to
>>> dereference non-pointer variables. Can this be done?
>>>
>>> void main()
>>> {
>>> int i;
>>> int* pi;
>>> double d;
>>> double* pd;
>>> char c;
>>> char* pc;
>>>
>>> scan(i, pi, d, pd, c, pc);
>>> }
>>>
>>> void scan(A...)(ref A data)
>>> {
>>> import std.traits;
>>> foreach (element; data) {
>>> if(isPointer!(typeof(element)) &&
>>> isIntegral!(typeof(*element))) {
>>> *element = 10;
>>> }
>>> }
>>> }
>>>
>>> Thanks
>>
>> Well, first things first:
>> if ---> static if
>>
>
> Changing it to static allows compilation, however I get the following
> runtime error:
>
> "Segmentation fault: 11"
>
> This happens whether I try to read from *element or modify it.
I assume you've actually initialized the pointers to something?
Given the above code, all the pointers point to null, and a segfault
would be a reasonable reaction.
--
Simen
More information about the Digitalmars-d-learn
mailing list