how will you add numbers like 1234567890123456789012345678901234567890, which can't be specified using primitive data types? what kind of data structure will you use ?
Apart from using libraries like MAPM and MPIR you can try holding them in a double (if precision is not needed), or rollup your own implementation based on arrays.
Google up on C bignum for alternatives.
This is probably a nice place to start.
You will need a C library that implements arbitrary-precision arithmetic. There are many to choose from. One popular choice is GNU Multi-Precision Library.
If you only want to add integers, which your question suggests might be the case, then you could simply use strings and implement single-digit addition with a 2D lookup table. If your requirements are more complex, then as others have suggested, you need some sort of library for handling big numbers. Whether you use one of the existing libraries or roll your own is up to you.
I've recently been using MPFR - the GNU Multiple Precision Floating-point computations with correct Rounding library. The API is similar in structure to MAPM, which is quite straight forward to use in my experience.
However, if you are only using integers you will probably get better performance from a multiple precision library that has separate integer types (ie MAPM), as MPFR is dedicated to floating point.