Quick actions

cmd+k|ctrl+k

Navigation

Languages

C array bounds checking

Snippet info

Language

C

Visibility

public

Author

evine

Created

2016-01-25T03:46:07Z

Updated

2016-01-25T03:46:07Z

#include <stdio.h>

#define BOUNDCHECK 1

#if BOUNDCHECK
#define DeclareArray(Type,Name,Size)            \
Type Name[Size] = {};                           \
int Name##Length_ = Size;

#define SetElement(Name,Element,Value)          \
if((Element) < Name##Length_ && (Element) >= 0){\
    Name[Element] = Value;                      \
}else{                                          \
    printf("WARNING\n");                        \
}

#define GetElement(Name,Element)                \
(((Element) < Name##Length_ && (Element) >= 0)? \
Name[Element]:printf("WARNING\n"))

#else

#define DeclareArray(Type,Name,Size)            \
Type Name[Size] = {};

#define SetElement(Name,Element,Value)          \
{                                               \
    Name[Element] = Value;                      \
}

#define GetElement(Name,Element)                \
(Name[Element])
#endif


int main() {
    
    DeclareArray(int,SomeArray,5);
    SetElement(SomeArray,4,7);
    
    SetElement(SomeArray,5,2); // Waring
    GetElement(SomeArray,5); // Waring
    
    int Element = GetElement(SomeArray,4);
    
    printf("Element = %i\n", Element );
    printf("Element = %i\n", GetElement(SomeArray,5) ); // Warning
    return 0;
}
INFO