Continuations are like violence, if they don't work then you're not using enough of them.

0

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h> #include <csptr/smart_ptr.h> #include <csptr/array.h> void print_int(void *ptr, void *meta) { (void) meta; // ptr points to the current element // meta points to the array metadata (global to the array), if any. printf("%d

", *(int*) ptr); } int main(void) { // Destructors for array types are run on every element of the // array before destruction. smart int *ints = unique_ptr(int[5], {5, 4, 3, 2, 1}, print_int); // ints == {5, 4, 3, 2, 1} // Smart arrays are length-aware for (size_t i = 0; i < array_length(ints); ++i) { ints[i] = i + 1; } // ints == {1, 2, 3, 4, 5} return 0; }

Allocating a smart array and printing its contents before destruction.



C Smart Pointers



What this is

This project is an attempt to bring smart pointer constructs to the (GNU) C programming language.



Features: unique_ptr, shared_ptr macros, and smart type attribute



https://github.com/Snaipe/libcsptr