#include <stdio.h>
|
|
#include <math.h>
|
|
|
|
|
|
|
|
typedef struct point {
|
|
double x, y;
|
|
} point;
|
|
|
|
|
|
/*
|
|
Nested anonymous struct declaration compiles with MS extensions only.
|
|
So you have to use -fms-extensions flag with gcc / clang.
|
|
C11 standard allows no typedef in the nested anonymous declaration :(
|
|
*/
|
|
typedef struct {
|
|
struct point;
|
|
double z;
|
|
} threepoint;
|
|
|
|
|
|
double threelength(threepoint p) {
|
|
return sqrt(p.x * p.x + p.y * p.y + p.z * p.z);
|
|
}
|
|
|
|
|
|
int main () {
|
|
|
|
threepoint p = {.x = 3, .y = 0, .z = 4};
|
|
printf("p is %g units from the origin\n", threelength(p));
|
|
|
|
}
|