Giter VIP home page Giter VIP logo

Comments (3)

ascherer avatar ascherer commented on July 19, 2024 1

This particular example can be fixed with

return @[(struct T){.a = 1}@]; // C99 compound literal

which works with CWEB 3.6 (May 2005) and up.

from cweb.

ascherer avatar ascherer commented on July 19, 2024 1

Here's a larger example with a few more tweaks:

@* C/99 Compound Literals.

@c
@<\#|include|s@>@;
@<Structure@>@;
@<Declaration@>@;
@<Definition@>@;
@<Output@>@;
@<Main@>@;

@ @<\#|inc...@>=
#include <stdio.h> /* |printf| */
#include <string.h> /* |memcpy| */

@ @<Struct...@>=
struct T
{
	int a;
	char* b;
} t2;

@ @<Decl...@>=
void g(const struct T* t);

@ @d bufsiz 10

@<Def...@>=
void f(void)
{
@t\2\2@>
	int *x = @[(int [bufsiz])@t @>{42}@];

	t2 = @[(struct T) {43, "world"}@];
	g( @[&(struct T)@t @>{@, .b="hello", .a=47 @,}@] );
	g( @[&(struct T) {43, "bye"}@] );
@t\2\2@>
	memcpy(x, @[(int[])@t @>{1, 2, 3}@], 3*sizeof(int));
	for (int i=0; i<bufsiz; ++i)
		printf("x[%d]==%d\n", i, x[i]);
}

@ @<Out...@>=
void g(const struct T* t)
{
	printf("struct T { a=%d, b=%s }\n", t->a, t->b);
}

@ @<Main@>=
int main(void)
{
	f();
}

from cweb.

Zeta611 avatar Zeta611 commented on July 19, 2024

Thank you for the detailed example, especially about the indentation tweak!

from cweb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.