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.
|