i have tried everything, cant figure out whats wrong .. here is the code with errors as comments:
1 2 3 4 5 6 7 8 9 10 11 12
// file name drawing.h
#include"mac.h"
void DrawFilledRect(int x, int y, int w, int h, D3DCOLOR color);
void DrawLine(int x1, int y1, int x2, int y2, int thickness, D3DCOLOR color);
void DrawLine(Vec2 src, Vec2 dst, int thickness, D3DCOLOR color); //error C2182: 'DrawLine': illegal use of type 'void'
//error C2365: 'DrawLine': redefinition; previous definition was 'function'
//error C2065: 'Vec2': undeclared identifier
According to what you've written here, drawing.h includes mac.h, mac.h includes includes.h, and includes.h includes both drawing.h and mac.h. You can't have files include each other. The C preprocessor is very rudimentary, it has no logic to resolve these kinds of conflicts.
#pragma once is non-standard, though most compilers' preprocessor do understand it. Using #ifndef/#define/#endif will work with any C/C++ preprocessor as header guards.
thanks helios , it worked all i had to do was remove drawing.h and mac.h from includes.h and include them separately where needed. thanks for the replies everyone