definicia symbolickej konstanty v C

Sekcia o programovaní, programovacích jazykoch...
amd64
Používateľ
Používateľ
Príspevky: 225
Dátum registrácie: Po 29. Sep, 2008, 16:03

definicia symbolickej konstanty v C

Príspevok od používateľa amd64 »

Takze mam jeden problem, neviem ako sa definuje symbolicka konstanta z vonka suboru, potrebujem to pri podmienenom preklade ktory vyuziva existenciu symbolickej konstanty a aj jej hodnotu, tu je jeden jednoduchy priklad:

Kód: Vybrať všetko

#include <stdio.h>
#include <ctype.h>


/* #define JAK 1   1 = hexadecimalne, 2 = oktalove*/


int main(void)
{
  int delenec = 5,
      delitel = 0;

#if defined(DBG)
  int c;

  fprintf(stderr, "Chcete ladici vypisy ? [A/N]: ");
  c = toupper(getchar());
  if (c == 'N')
    fclose(stderr);
#endif

#if defined(DBG)  &&  JAK == 1
  fprintf(stderr, "stderr: delitel= %x -hexa\n", delitel);

#elif defined(DBG)  &&  JAK == 2
  fprintf(stderr, "stderr: delitel= %o -octal\n", delitel);

#else
  fprintf(stderr, "stderr: 'Bez ladicich vypisu'\n");
#endif

  printf("stdout: celociselny podil = %d\n", delenec / delitel);

  return 0;
}
no a ja neviem ako mam zvonka definovat JAK. pouzivam DEV-C++.
Naposledy upravil/-a amd64 v St 22. Júl, 2009, 08:29, upravené celkom 1 krát.
Používateľov profilový obrázok
NemesiS
Používateľ
Používateľ
Príspevky: 1688
Dátum registrácie: So 27. Jan, 2007, 08:00
Bydlisko: KE

Re: definicia symbolickej konstanty v C

Príspevok od používateľa NemesiS »

neviem či dobre chápem, ale asi to máš blbo.
skút to takto

#define JAK_1 hexa
#define JAK_2 okta
Powered by Lenovo R500; Sound by E-MU 0204|USB => Little Dot MK III => Beyerdynamic DT 880 600Ω
Používateľov profilový obrázok
Jofo
Redaktor
Redaktor
Príspevky: 1677
Dátum registrácie: St 23. Feb, 2005, 20:00
Bydlisko: Brno

Re: definicia symbolickej konstanty v C

Príspevok od používateľa Jofo »

Je to

#ifdef (test ci je definovana), a
#ifndef (ci nie je definovana)

Viac tu: http://www.fredosaurus.com/notes-cpp/pr ... ifdef.html" onclick="window.open(this.href);return false;
alebo tu: http://gcc.gnu.org/onlinedocs/cpp/Ifdef.html" onclick="window.open(this.href);return false;
Vy sa tu smejete a vonku zúri socializmus!
amd64
Používateľ
Používateľ
Príspevky: 225
Dátum registrácie: Po 29. Sep, 2008, 16:03

Re: definicia symbolickej konstanty v C

Príspevok od používateľa amd64 »

Impulsive napísal:neviem či dobre chápem, ale asi to máš blbo.
skút to takto

#define JAK_1 hexa
#define JAK_2 okta
zle si pochopil, ja to nepotrebujem definovat vnutri programu, ale zvonka, a podla toho ci bola zvonka definovana tato symbolicka konstanta podla toho by sa robili urcite casti programu, cize napr. kebyze nie je zvonka definovana tak sa vynecha cast

Kód: Vybrať všetko

#if defined(DBG)
  int c;

  fprintf(stderr, "Chcete ladici vypisy ? [A/N]: ");
  c = toupper(getchar());
  if (c == 'N')
    fclose(stderr);
#endif
ale ja to chcem definovat DBG zvonka, len neviem ako.

nManJofo : tak ako pises, "test ci je definovana", lenze ako ju mam definovat zvonka?
v knihe mam napisane ze sa da definovat symbolicku konstantu zvonka suboru a to pouzitim prepinaca kompilatoru a ze treba hladat niekde tu: OPtions/Compiler/COde generation/Defines lenze ja tam ten defines neviem najst, code generation som nasiel len defines neviem
Používateľov profilový obrázok
Jofo
Redaktor
Redaktor
Príspevky: 1677
Dátum registrácie: St 23. Feb, 2005, 20:00
Bydlisko: Brno

Re: definicia symbolickej konstanty v C

Príspevok od používateľa Jofo »

Aha, uz mi je to jasne, co potrebujes...

Pokial pouzivas GCC-cko ako prekladac, robi sa to prepinacom -D a hned za nim nazov konstanty

napr. ak chcem zadefinovat konstantu TEST, pustim preklad s prepinacom -DTEST
Vy sa tu smejete a vonku zúri socializmus!
amd64
Používateľ
Používateľ
Príspevky: 225
Dátum registrácie: Po 29. Sep, 2008, 16:03

Re: definicia symbolickej konstanty v C

Príspevok od používateľa amd64 »

tak pouzivam toto viem ze sa da spustit prekladac z prikazoveho riadka, a vtedy to ma taku syntax aku pises, len v knizke pisu ze sa to da aj inak ze priamo v IDE.

EDIT: no uz som nato prisiel, tak treba vojst do nástroje->nastavenie prekladaca->a zaskrtnut "pridat nasledujuce prikazy pri volani prekladaca"- a potom uz len napisat prikazy, cize tak ako pise nManJofo, ked chcete definovat symbolicku konstantu pre podmieneny preklad tak treba zadar prepinac -D

Návrat na "Programovanie"