Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C Programming (http://www.velocityreviews.com/forums/f42-c-programming.html)
-   -   Need help in understanding c code (http://www.velocityreviews.com/forums/t511254-need-help-in-understanding-c-code.html)

Herman.Schultz@gmail.com 06-01-2007 02:14 PM

Need help in understanding c code
 
Hi,

I see this code in vlc code. I have a question about this line:
net_Printf( VLC_OBJECT(p_access), p_sys->fd, pvs,
"Range: bytes="I64Fd"-\r\n", i_tell );

What is the meaning of "Range: bytes="I64Fd"-\r\n" ? especially I64Fd
(in double quotes)


static int Request( access_t *p_access, int64_t i_tell )
{
access_sys_t *p_sys = p_access->p_sys;
char *psz ;
v_socket_t *pvs = p_sys->p_vs;


//.....

net_Printf( VLC_OBJECT(p_access), p_sys->fd, pvs,
"Range: bytes="I64Fd"-\r\n", i_tell );

}


Richard Heathfield 06-01-2007 02:30 PM

Re: Need help in understanding c code
 
Herman.Schultz@gmail.com said:

> Hi,
>
> I see this code in vlc code. I have a question about this line:
> net_Printf( VLC_OBJECT(p_access), p_sys->fd, pvs,
> "Range: bytes="I64Fd"-\r\n", i_tell );
>
> What is the meaning of "Range: bytes="I64Fd"-\r\n" ? especially I64Fd
> (in double quotes)


It's probably a #define for "whatever the heck net_Printf uses as a
format specifier for long long int". For example, it might be:

#define I64Fd "%I64d"

or it might be

#define I64Fd "%lld"

or something else.

The string literal concatenation rule makes it all join up properly for
the compiler.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at the above domain, - www.

Barry Schwarz 06-02-2007 12:38 AM

Re: Need help in understanding c code
 
On Fri, 01 Jun 2007 14:14:47 -0000, Herman.Schultz@gmail.com wrote:

>Hi,
>
>I see this code in vlc code. I have a question about this line:
> net_Printf( VLC_OBJECT(p_access), p_sys->fd, pvs,
> "Range: bytes="I64Fd"-\r\n", i_tell );
>
>What is the meaning of "Range: bytes="I64Fd"-\r\n" ? especially I64Fd
>(in double quotes)
>
>

I64Fd is not in double quotes. The expression consists of three
parts:
1 - the string literal "Range: bytes="
2 - the "token" I64Fd
3 - the string literal "-\r\n"

As RH suggested, the token I64Fd is probably a #define that is set to
some string literal (for sake of discussion, assume the literal is
"%_"). Consequently, the entire expression consists of three string
literals. When string literals abut or are separated only by white
space, the compiler automatically concatenates them together. As a
result, when the line question is compiled, the expression will the
single string literal:
"Range: bytes=%_-\r\n"

As usual, the address of the literal will be the value passed to
net_Printf.


Remove del for email


All times are GMT. The time now is 04:48 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.