- Using complex to define unordered sets?
Example
Source
1 #include <stdio.h>
2 #include <complex.h>
3
4 typedef complex int unordered_i; // non-standard!
5 typedef complex double unordered;
6
7 #define S1 ((unordered)(1*I)) // GCC-extension!
8 static const unordered S2 = (2*I); // GCC-extension!
9 static unordered state = S2; // non-const initializer!
10
11
12 int main(void)
13 {
14 if (state != S2) return 1;
15 if (state > S1) return 2; // Compiler error - our objective!
16
17 return 0;
18 }
19
GCC
$ c99 --version
gcc (Debian 4.3.2-1.1) 4.3.2
$ c99 -std=c99 --pedantic -o unordered unordered.c
unordered.c:4: warning: ISO C does not support complex integer types
unordered.c:8:32: warning: imaginary constants are a GCC extension
unordered.c:9: error: initializer element is not constant
unordered.c:15:17: warning: imaginary constants are a GCC extension
unordered.c: In function main:
unordered.c:15: error: invalid operands to binary > (have unordered and complex double)