By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,171 Members | 980 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,171 IT Pros & Developers. It's quick & easy.

Need help in understanding c code

P: n/a
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 );

}

Jun 1 '07 #1
Share this Question
Share on Google+
2 Replies


P: n/a
He************@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.
Jun 1 '07 #2

P: n/a
On Fri, 01 Jun 2007 14:14:47 -0000, He************@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
Jun 2 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.