Лекция 19 - Препроцесор и хедъри

Линк към презентацията

А и Б клас

// macros.c

#include <stdio.h>

#define DEBUG
#define PI 3.14
#define square(x) (x) * (x)

int main() {
  #ifdef DEBUG
  printf("I'M DEBUGGING\n");
  #endif
  printf("PI = %f\n", PI);
  int a = 7;
  printf("7^2 = %d\n", square(5 + 2));
  return 0;
}

#undef DEBUG
// headers.c

#include <stdio.h>

#include "string.h"
#include "string.h"

int main() {
  //printf("strlen(abcd) = %d\n", strlen2("abcd"));
  return 0;
}
// string.h
#ifndef STRING_H
#define STRING_H

int strlen2(char *);

int VAR = 10;

#endif
// string-linux.c
#include "string.h"

int strlen2(char* str) {
  return 5;
}
// string-win.c
#include "string.h"

int strlen2(char* str) {
  return 7;
}
// makefile
default: linux

win:
	gcc -E headers.c string-win.c

linux:
	gcc headers.c string-linux.c