www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - C to D conversion for function

reply "Sumit Raja" <nnn nnn.com> writes:
Hi,

I wanted some help in converting this

void av_log_ask_for_sample(void *avc, const char *msg, ...) 
av_printf_format(2, 3);

from C to D.

I don't know what it means or is called in C to start with so I 
am a bit lost on what to search for.

Thanks

Sumit
Apr 29 2013
parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 04/29/2013 12:57 PM, Sumit Raja wrote:
 Hi,

 I wanted some help in converting this

 void av_log_ask_for_sample(void *avc, const char *msg, ...)
 av_printf_format(2, 3);

 from C to D.

 I don't know what it means or is called in C to start with so I am a bit
 lost on what to search for.

 Thanks

 Sumit
av_printf_format is a preprocessor macro that expands to a built-in compiler attribute which enables compile-time printf-style format string checking. There is no support for such a feature in any D compiler. You want void av_log_ask_for_sample(void* avc, const(char)* msg, ...); In case you want to preserve the attribute: struct av_printf_format{ int fmtpos, attrpos; } av_printf_format(2, 3) void av_log_ask_for_sample(void* avc, const(char)* msg, ...);
Apr 29 2013
next sibling parent reply 1100110 <1100110 gmail.com> writes:
On 04/29/2013 06:50 AM, Timon Gehr wrote:
 On 04/29/2013 12:57 PM, Sumit Raja wrote:
 Hi,

 I wanted some help in converting this

 void av_log_ask_for_sample(void *avc, const char *msg, ...)
 av_printf_format(2, 3);

 from C to D.

 I don't know what it means or is called in C to start with so I am a bit
 lost on what to search for.

 Thanks

 Sumit
av_printf_format is a preprocessor macro that expands to a built-in compiler attribute which enables compile-time printf-style format string checking. There is no support for such a feature in any D compiler. You want void av_log_ask_for_sample(void* avc, const(char)* msg, ...); In case you want to preserve the attribute: struct av_printf_format{ int fmtpos, attrpos; } av_printf_format(2, 3) void av_log_ask_for_sample(void* avc, const(char)* msg, ...);
What is the difference between const(char)*, and const(char*)? I have seen them used pretty much interchangeably... Are they? Somehow I don't think they are.
Apr 29 2013
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 04/29/2013 02:17 PM, 1100110 wrote:
 ...
 What is the difference between const(char)*, and const(char*)?  I have
 seen them used pretty much interchangeably...

 Are they? Somehow I don't think they are.
Variables of type const(char)* can be mutated, while const(char*) cannot be. void main(){ const(char)* a = "123".ptr; *a = 2; // error a = "456".ptr; // ok const(char*) b = "123".ptr; *b = 2; // error b = "456".ptr; // error }
Apr 29 2013
prev sibling parent reply "Sumit Raja" <nnn nnn.com> writes:
On Monday, 29 April 2013 at 11:50:21 UTC, Timon Gehr wrote:

 In case you want to preserve the attribute:

 struct av_printf_format{ int fmtpos, attrpos; }

  av_printf_format(2, 3) void av_log_ask_for_sample(void* avc, 
 const(char)* msg, ...);
Thanks. What does av_printf_format(2, 3) do to the function?
Apr 29 2013
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 04/29/2013 02:24 PM, Sumit Raja wrote:
 On Monday, 29 April 2013 at 11:50:21 UTC, Timon Gehr wrote:

 In case you want to preserve the attribute:

 struct av_printf_format{ int fmtpos, attrpos; }

  av_printf_format(2, 3) void av_log_ask_for_sample(void* avc,
 const(char)* msg, ...);
Thanks. What does av_printf_format(2, 3) do to the function?
Nothing except attaching a piece of data to it http://dlang.org/attribute.html#UserDefinedAttribute
Apr 29 2013