Free tutorials in Hindi & English Daily computer, mobile and IT guides Beginner friendly learning
Blog · C Programming · 03 Jul 2026 · Hindi + English

Define const in C: 3 Ways to Define Constants (const, #define, enum)

There are 3 ways to define constants in C: the const keyword, the #define preprocessor directive and enum. See syntax, examples and which one to use.

How to define a constant in C

There are 3 ways to define constants in C: the const keyword, the #define preprocessor directive, and enum. Each works differently and each has a best use case.

Way 1: const keyword

const int MAX_STUDENTS = 60;
const double GST_RATE = 0.18;

const creates a real variable in memory that the compiler marks read-only. It has a data type, obeys scope rules and shows up properly in a debugger. This is the preferred modern way for typed constant values.

Way 2: #define directive

#define MAX_STUDENTS 60
#define PI 3.14159
#define SCHOOL_NAME "Alpine Public School"

#define is handled by the preprocessor before compilation. Every occurrence of the name is textually replaced by the value — no memory, no type, no scope. It works everywhere a literal works, including case labels and array sizes in old C standards.

Note: There is no semicolon and no equals sign in #define. Writing #define MAX = 60; is a classic beginner mistake — the = 60; text gets pasted into your code and breaks it.

Way 3: enum

enum { MIN_AGE = 5, MAX_AGE = 18, CLASS_SIZE = 40 };

int students[CLASS_SIZE];   // valid: enum is a true compile-time constant

enum creates named integer constants that are true compile-time constants. It is the cleanest way to define a group of related integer constants without polluting the code with many #define lines.

Full program using all 3 ways

#include <stdio.h>

#define PI 3.14159                 /* Way 2: preprocessor */
enum { MAX_ITEMS = 5 };            /* Way 3: enum        */

int main() {
    const float RADIUS = 7.0f;     /* Way 1: const       */
    float area = PI * RADIUS * RADIUS;

    printf("Area = %.2f\n", area);
    printf("Max items = %d\n", MAX_ITEMS);
    return 0;
}
Area = 153.94 Max items = 5

Which one should you use?

SituationBest choice
A single typed value (float, double, struct, pointer)const
Value needed in case labels or conditional compilation (#if)#define
A group of related integer constantsenum
String constant text used in many files#define or const char *

C में constant कैसे define करें

C में constant define करने के 3 तरीके हैं: const keyword, #define preprocessor directive, और enum. तीनों अलग तरह से काम करते हैं और हर एक का अपना best use case है.

तरीका 1: const keyword

const int MAX_STUDENTS = 60;
const double GST_RATE = 0.18;

const memory में एक real variable बनाता है जिसे compiler read-only mark कर देता है. इसका data type होता है, scope rules follow करता है और debugger में सही दिखता है. Typed constant values के लिए यह modern preferred तरीका है.

तरीका 2: #define directive

#define MAX_STUDENTS 60
#define PI 3.14159
#define SCHOOL_NAME "Alpine Public School"

#define को preprocessor compilation से पहले handle करता है. Name की हर occurrence value से textually replace हो जाती है — न memory, न type, न scope. यह हर उस जगह काम करता है जहां literal काम करता है, जैसे case labels.

ध्यान दें: #define में न semicolon होता है न equals sign. #define MAX = 60; लिखना classic beginner mistake है — = 60; text आपके code में paste होकर उसे तोड़ देता है.

तरीका 3: enum

enum { MIN_AGE = 5, MAX_AGE = 18, CLASS_SIZE = 40 };

int students[CLASS_SIZE];   // valid: enum true compile-time constant है

enum named integer constants बनाता है जो true compile-time constants होते हैं. Related integer constants के group को define करने का यह सबसे clean तरीका है — कई सारी #define lines की ज़रूरत नहीं.

तीनों तरीकों वाला पूरा program

#include <stdio.h>

#define PI 3.14159                 /* तरीका 2: preprocessor */
enum { MAX_ITEMS = 5 };            /* तरीका 3: enum        */

int main() {
    const float RADIUS = 7.0f;     /* तरीका 1: const       */
    float area = PI * RADIUS * RADIUS;

    printf("Area = %.2f\n", area);
    printf("Max items = %d\n", MAX_ITEMS);
    return 0;
}
Area = 153.94 Max items = 5

कौन-सा तरीका कब use करें?

SituationBest choice
Single typed value (float, double, struct, pointer)const
case labels या conditional compilation (#if) में ज़रूरी value#define
Related integer constants का groupenum
कई files में use होने वाला string constant#define या const char *

Frequently Asked Questions

What are the 3 ways to define a constant in C?

You can define constants in C using the const keyword, the #define preprocessor directive, or enum for groups of integer constants.

Does #define need a semicolon?

No. #define is a preprocessor directive, not a statement, so it must not end with a semicolon or use an equals sign.

Which is better: const or #define?

const is generally better because it is type-checked and scoped, but #define is required for case labels, conditional compilation and very old compilers.