On Sep 12, 2006, at 12:28 PM, prashanth joshi wrote:

> In the following function,
> what is pinfo _U_  (pinfo followed by a blank space and then _U_?

_U_ is a macro defined by the Wireshark build process.

If the compiler is GCC 2.0 or a later GCC release, it expands to  
__attribute((unused))__, which is a way of telling GCC that the  
variable is unused, so that it won't warn about it.

Otherwise, it's defined as nothing, so that compilers that don't  
support __attribute((unused))__ won't report an error.

_U_ is mainly used when a function is called through a pointer in a  
table of some sort, so that, even though it might not use a given  
argument, other functions pointed to by pointers in that table might  
use that argument, so the argument can't be removed from the argument  
list.  _U_ is used so that you don't get warnings about that; the more  
warnings are produced, the harder it is to see the ones that warn of  
real problems, so suppressing warnings that are known not to report a  
real problem is important.


> I am seeing such kind of variable for the first time.
> Can i use instead packet_info  * ptr as a formal argument in  
> decode_gtp_chrg_id?

You could, but it'd mean you might get warnings from GCC, if you're  
using GCC.


> And is the calling of function foo( ) correct?

No.  The _U_ is only used in the definition of a function or variable,  
to tag a parameter to the function, or another variable, as unused.   
It's not used when *using* a variable tagged with _U_.  (In fact, if  
you're using the variable, you don't need or want the _U_; if you're  
using it, it's obviously used, and you shouldn't tag it as unused.)


_______________________________________________
Wireshark-dev mailing list
[email protected]
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to