Dołączenie cNAME lub NAME.h jeśli nie ma pierwszego - dyrektywy preprocesora

0

W skrócie:

  • piszę program w c++
  • chcę dołączyć pliki cstdio i cmath
  • jeśli kompilator ich nie posiada chcę użyć stdio.h i math.h
  • wszystko muszę zmieścić w jednym pliku .cpp
  • mam wysłać plik i nie wiem, czy adresat będzie posiadał cstdio i cmath (zdaję sobie sprawę, że to standard, ale np. ja ich nie posiadam)

Mam zadania z informatyki do zrobienia. Mam podany cel (nie ważne jaki) i mam napisać program w c++. Umiem to zrobić. Ma on działać i realizować cel, nieważne jak go napiszę... Nie mam plików: iostream, cstdio. Logiczne, że wybiorę stdio.h... Zadania muszę wysłać jako pojedynczy plik ".cpp". Archiwa odpadają. Chciałbym aby kod odpowiedzialny za dołączanie plików nagłówkowych wyglądał następująco:

#include <cstdio>
#include <cmath>
using namespace std;

lub jeśli jest to niemożliwe:

#include <stdio.h>
#include <math.h>

Jeśli użytkownik posiada cXXX wstaw to pierwsze, w przeciwnym wypadku to drugie - zarys tego co chcę zrobić.
Dyrektywy?

Wiem, że nie muszę mieć pliku iostream aby napisać program i go wysłać (nie muszę go kompilować), ale wolę uczyć się C (język nieobiektowy). Nie pytajcie dlaczego (assembler), tylko mi pomóżcie. Będę wdzięczny.

0

Każda biblioteka ma makro na początku. Np. <conio.h> ustawia makro CONIO_H. Czyli możesz napisać:

#ifndef _CONIO_H_
#include <conio.h>
#endif

Nie wiem czy o to Ci dokładnie chodziło.

0

@PanRiK: Chodzi o to że program ma spróbować dołączyć biblioteki cstdio i cmath, w przypadku gdy nie istnieją wtedy dołącza biblioteki stdio.h i math.h.

W C++17 istnieje __has_include.
Jeżeli twój kompilator nie obsługuje tej dyrektywy zobacz tutaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1