Writing an obfuscated C code

As a part of my software protection course  offered by Dr. Arun Lakhotia, I was asked to create an obfuscated C code which computes the approximate value of pi from a circle drawn using underscores and hyphens.

 

This is a code written by the winner of international obfuscated C code contest 1988 edition.

#include 
#define _ F-->00||-F-OO--;

int F=00,OO=00;

main() {
        F_OO();
        printf("%1.3f\n",4.*-F/OO/OO);
}

F_OO() {
            _-_-_-_
       _-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
        _-_-_-_-_-_-_-_
            _-_-_-_
}

When we execute this program we get a value 3.14 which is the approximate value of Pi.

In C/C++, only during the time of pre-processing, the macros are substituted with the corresponding string defined. The code has a macro defined

#define _ F-->00||-F-OO--;

. which checks if ‘F–‘ is greater than zero or not. According the OR operator, the second condition will not be checked until or unless if the first condition (i.e the condition on the left side of the OR operator) returns false.

This is how the code looks upon pre-processing:

F_OO() {
            F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
       F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
    F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
  F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
 F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
 F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
 F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
 F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
  F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
    F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
        F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
            F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;-F-->00||-F-OO--;
}

F–>0 gets executed and fails only at the first statement of a line, other statements in that corresponding line will have ‘-‘ pre-pended at F (such that value of F becomes positive and the first condition of the OR becomes true which indeed neglects the operations in the left side of the OR). Hence F– is executed equal number of times the macros are substituted where as OO– is executed only once per line.

After adding few print statements to the F_OO() this is the output which I have got which indeed helped me to understand what each and every line does:

Line 1  F: -4   OO: -1 No o dashes: -4
Line 2  F: -13  OO: -2 No o dashes: -9
Line 3  F: -25  OO: -3 No o dashes: -12
Line 4  F: -39  OO: -4 No o dashes: -14
Line 5  F: -54  OO: -5 No o dashes: -15
Line 6  F: -69  OO: -6 No o dashes: -15
Line 7  F: -85  OO: -7 No o dashes: -16
Line 8  F: -101 OO: -8 No o dashes: -16
Line 9  F: -117 OO: -9 No o dashes: -16
Line 10 F: -133 OO: -10 No o dashes: -16
Line 11 F: -148 OO: -11 No o dashes: -15
Line 12 F: -163 OO: -12 No o dashes: -15
Line 13 F: -177 OO: -13 No o dashes: -14
Line 14 F: -189 OO: -14 No o dashes: -12
Line 15 F: -197 OO: -15 No o dashes: -8
Line 16 F: -201 OO: -16 No o dashes: -4
3.14

As the circle is made up of 16 lines at the end of 16th line the value of F becomes -201 and OO : -16

We already know that the value of pi is calculated using the formula 4*.-F/OO/OO. So lets do reverse engineering to find out what F and OO actually means.

Area = Pi * radius * radius
Pi = Area / (radius * radius)
Pi = Area / (diameter/2 * diameter/2)
Pi = (4 * Area) / (diameter * diameter)
Pi = (4 * Area) / diameter / diameter

So F represents the area of the circle and OO represents the diameter of the circle.

According to the author of this code (16 diameter code), the value of the more approximate value of pi can be calculated by using a bigger circle.

Lets do a reverse engineering to create a circle with 32 diameter.

According the formula, we can create the area i.e no of underscore that is required:

Area =  ( Pi * diameter * diameter ) / 4

In our case:

Area = (3.14062 * 32 * 32)/4
Area ~ 804

804 underscores are required to draw a 32 diameter ascii circle.

When I checked the 16 diameter circle, I found a pattern which the author had used to draw it.
No of underscores in the first and the final line is equal to the number of lines with length = diameter (lines near the center of the circle)

F_OO() {
1                        _-_-_-_-_-_-_-_                          /* No of underscores: 8 */
2 
3 
4 
5 
6 
7
8 
9 
10
11_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
12_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
13_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
14_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
15_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
16_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
17_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
18_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
19
20
21
22
23
24
25
26
27
28
29
30
31
32                        _-_-_-_-_-_-_-_                         /* No of underscores: 8 */
}

So far we have used 272 underscores out of 804 (32*8 + 8*2). Lets the fill the rest of the lines by doubling the number of underscores in 16 diameter circle.

F_OO() {
1                        _-_-_-_-_-_-_-_                          /* No of underscores: 8 */
2 
3 
4 
5 
6 
7
8   _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
9   _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
10  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
11_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
12_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
13_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
14_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
15_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
16_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
17_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
18_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
19  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
20  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
21  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
22
23
24
25
26
27
28
29
30
31
32                        _-_-_-_-_-_-_-_                         /* No of underscores: 8 */
}

No of underscores remaining = 352 (804- (32*8 + 30*6 + 8*2)

F_OO() {
1                        _-_-_-_-_-_-_-_                          /* No of underscores: 8 */
2                     _-_-_-_-_-_-_-_-_-_-_-_                     /* No of underscores: 12 */
3                 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_                 /* No of underscores: 16 */
4             _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_             /* No of underscores: 20 */
5           _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_           /* No of underscores: 22 */
6         _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_         /* No of underscores: 24 */
7       _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_       /* No of underscores: 26 */
8     _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_     /* No of underscores: 28 */
9     _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_     /* No of underscores: 28 */
10  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
11   _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_  /* No of underscores: 30 */
12  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
13_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
14_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
15_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
16_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
17_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
18_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
19_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
20_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
21  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
22  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
23  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
24    _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_     /* No of underscores: 28 */
25    _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_     /* No of underscores: 28 */
26      _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_       /* No of underscores: 26 */
27        _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_         /* No of underscores: 24 */
28          _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_           /* No of underscores: 22 */
29            _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_             /* No of underscores: 20 */
30                _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_                 /* No of underscores: 16 */
31                    _-_-_-_-_-_-_-_-_-_-_-_                     /* No of underscores: 12 */
32                        _-_-_-_-_-_-_-_                         /* No of underscores: 8 */
}

Integrating the ascii circle with the code:

#include 
/* #define _ -F00||-F-OO--; 

int F=00,OO=00;

main() {
        F_OO();
        printf("%1.5f\n",4.*-F/OO/OO);
}

F_OO() {
                       _-_-_-_-_-_-_-_                          /* No of underscores: 8 */
                    _-_-_-_-_-_-_-_-_-_-_-_                     /* No of underscores: 12 */
                _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_                 /* No of underscores: 16 */
            _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_             /* No of underscores: 20 */
          _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_           /* No of underscores: 22 */
        _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_         /* No of underscores: 24 */
      _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_       /* No of underscores: 26 */
    _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_     /* No of underscores: 28 */
    _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_     /* No of underscores: 28 */
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ /* No of underscores: 32 */
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_   /* No of underscores: 30 */
    _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_     /* No of underscores: 28 */
    _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_     /* No of underscores: 28 */
      _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_       /* No of underscores: 26 */
        _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_         /* No of underscores: 24 */
          _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_           /* No of underscores: 22 */
            _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_             /* No of underscores: 20 */
                _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_                 /* No of underscores: 16 */
                    _-_-_-_-_-_-_-_-_-_-_-_                     /* No of underscores: 12 */
                        _-_-_-_-_-_-_-_                         /* No of underscores: 8 */
}

I have created a Makefile in-order to compile both 16 and 32 diameter circle files

# Makefile
shell=/bin/sh
CC=cc
CFLAGS=-O
CPP=/lib/cpp

EXECS=circle circle32

all:${EXECS}

circle:circle.c
        ${CC} ${CFLAGS} $? -o $@

circle32:circle32.c
        ${CC} ${CFLAGS} $? -o $@

clean   :
                rm -rf ${EXECS} *.o

.PHONY  : clean all 

Lets execute it!

➜  A#1 (master) ./circle32
3.14062

Tada!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s