ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Hi,
from stdarg.h i'm looking at va_list and i'm wondering if it's possible to test for 'undefined', in the sense of:
Quote:
va_arg
Expands to the next argument in the paramater list of the function with type type. Note that ap must be initialized with va_start. If there is no next argument, then the result is undefined.
from stdarg.h i'm looking at va_list and i'm wondering if it's possible to test for 'undefined', in the sense of:
When the C standard says “the result is undefined” it is not talking about a particular value “undefined” which you get when you test the result. It means that doing such results in “undefined behavior” of the implementation. This pretty much means anything can happen and whatever does happen is nonportable. A prime example of undefined behavior (besides va_arg), is dereferencing a pointer to an object whose lifetime has ended.
This is different from unspecified behavior in which there are two or more choices, and the standard does not favor one choice over another (an example of unspecified behavior is the order of evaluation of function arguments).
Quote:
Originally Posted by rubadub
oh, the idea is to not have to pass a terminating value as last arg!
Unfortunately, the way C was set up (and the way it is often implemented—with function calling on a stack), it is impossible to have runtime detection of the “last” argument of a function call.
Unfortunately, the way C was set up (and the way it is often implemented—with function calling on a stack), it is impossible to have runtime detection of the “last” argument of a function call.
Btw, you don’t have to use a terminating value to figure out the number of arguments you have. For example, the printf() function will deduce the number of arguments it has by reading the format string and counting the number of format specifiers.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.