|
|
 |
 |
 |
 |
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 );
}
Herman.Schu@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.
On Fri, 01 Jun 2007 14:14:47 -0000, Herman.Schu @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
|
 |
 |
 |
 |
|