[Assorted-commits] SF.net SVN: assorted: [657] sandbox/trunk/src/c
Brought to you by:
yangzhang
From: <yan...@us...> - 2008-04-09 03:47:34
|
Revision: 657 http://assorted.svn.sourceforge.net/assorted/?rev=657&view=rev Author: yangzhang Date: 2008-04-08 20:47:34 -0700 (Tue, 08 Apr 2008) Log Message: ----------- Modified Paths: -------------- sandbox/trunk/src/c/server.c Added Paths: ----------- sandbox/trunk/src/c/vaargs.c sandbox/trunk/src/cc/boost_test.cc Modified: sandbox/trunk/src/c/server.c =================================================================== --- sandbox/trunk/src/c/server.c 2008-04-07 05:31:11 UTC (rev 656) +++ sandbox/trunk/src/c/server.c 2008-04-09 03:47:34 UTC (rev 657) @@ -11,7 +11,7 @@ int main() { - int s = socket(AF_INET, SOCK_STREAM, 0); + int s = socket(PF_INET, SOCK_STREAM, 0); if (s == 0) { perror("socket() failed"); return 1; Added: sandbox/trunk/src/c/vaargs.c =================================================================== --- sandbox/trunk/src/c/vaargs.c (rev 0) +++ sandbox/trunk/src/c/vaargs.c 2008-04-09 03:47:34 UTC (rev 657) @@ -0,0 +1,57 @@ +#include <stdarg.h> +#include <stdio.h> + +// Note that ISO C requires a named argument before ‘...’, so you cannot +// define: +// +// f(...) + +// First, a simple complete example. +void +f(int base, ...) +{ + va_list ap; + va_start(ap, base); + int sum = base; + for (;;) { + int i = va_arg(ap, int); + if (i == 0) break; + sum += i; + } + va_end(ap); + printf("%d\n", sum); +} + +void +g(int base, va_list ap) +{ + //va_start(ap, base); + int sum = base; + for (;;) { + int i = va_arg(ap, int); + if (i == 0) break; + sum += i; + } + printf("%d\n", sum); +} + +// This is how you pass a suffix of the va_list to a another function. Here we +// have h passing everything but garbage on to g. This requires h to extract +// out the first argument and pass that as a normal arg. +void +h(int garbage, ...) +{ + va_list ap; + va_start(ap, garbage); + int base = va_arg(ap, int); + va_end(ap); + g(base, ap); +} + +int +main() +{ + f(1, 2, 3, 0); + h(-3, 1, 2, 3, 0); + return 0; +} Added: sandbox/trunk/src/cc/boost_test.cc =================================================================== --- sandbox/trunk/src/cc/boost_test.cc (rev 0) +++ sandbox/trunk/src/cc/boost_test.cc 2008-04-09 03:47:34 UTC (rev 657) @@ -0,0 +1,13 @@ +// Demonstrates how to use the (poorly documented) boost test framework. + +#define BOOST_TEST_MAIN +//#define BOOST_TEST_MODULE MyTest +#include <boost/test/unit_test.hpp> +#include <boost/test/included/unit_test_framework.hpp> +using namespace std; + +BOOST_AUTO_TEST_CASE( my_test ) +{ + BOOST_CHECK( 1 == 1 ); +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |