mingw-gcc system include, hakemistot, joista etsitään ... ?

Nyt ei ole siis kyse "user includesta" eli #include "file.h"

Vaan system includesta #include



Kääntäjä: mingw-gcc 4.4.0
ympäristö: Windows XP professional

Päätin itse hieman tutkia asiaa...

Löytyi 287 sellaista hakemistoa, joissa on vähintään yksi .h -tiedosto, ja joka hakemisto on joko C:\Mingw\ tai jokin sen (suora tai epäsuora) alihakemisto.

Tein ohjelman, joka selvittää, etsitäänkö todella automaattisesti (siis ilman että gcc:lle annetaan kääntäjäoptiona hakemistoa tai hakemistoja, joista noita system includeja etsiä) kaikista em. 287 hakemistosta !

Tulos: ei etsitä.

Vain 4 ensimmäistä käännösyritystä onnistui, ja jo 5:nnen kohdalla tuli virheilmoitus: "error: my_test_include.h: No such file or directory"

Eli siis näistä neljästä hakemistosta etsitään system includeja ja tässä järjestyksessä:

C:\Mingw\include\
C:\Mingw\lib\gcc\mingw32\4.4.0\include\
C:\Mingw\lib\gcc\mingw32\4.4.0\include-fixed\
C:\Mingw\mingw32\include\

Kysymys teille lukijoille:

Pitääkö saamani tulos paikkansa, vai onko testiohjelmassani jokin virhe ?

Olin siis aiemmin laittanut kaikkiin 287:aan hakemistoon tiedoston

my_test_include.h

jonka olennaisin sisältö oli tämä:

#define test_value 1

...

#define test_value 287

(kussakin eri hakemistossa siis muuten samanlainen my_test_include.h, mutta numeroarvo kullekin yksilöllinen 1 .. 287 )

Sitten testiohjelmani ajoi gcc:n 2*287 kertaa (kukin pari: a) kääntää ja b) linkkaa DLL:ksi c- kielellä kirjoittamani DLL -kirjaston) ja kunkin kerran jälkeen lataa DLL:n LoadLibraryllä, kutsuu testifunktiota DLL:stä ja sitten FreeLibrary(Handle)

Onnistuneen käännöksen, linkityksen ja ajon jälkeen testiohjelmani poisti sen includefilen, jossa oleva arvo vastaa käännetyn DLL:n palauttamaa ja sitten silmukan seuraavaan kierrokseen - silmukka päättyy kun joko

a) kaikki 287 hakemistoa on käyty läpi

TAI

b) kääntäminen päätty virheeseen.

Tuloksena siis 4 ensimmäistä käännöstä 287 mahdollisesta menivät läpi ok, ja jo 5:nnen kohdalla includea ei siis löytynyt.

Oliko saamani tulos siis oikea vai menikö jotain odottamatonta pieleen ?
3316
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Joops.... forumsofta ei hyväksy pienempi kuin ja suurempi kuin -merkkejä sellaisenaan vaan niiden välissä ollut sisältö jäi pois.

No, kokeillaanpa samaa käyttämällä ns. html entity:jä:


siis ...

Nyt ei ole siis kyse "user includesta" eli #include "file.h"

Vaan system includesta #include

Äänestä

Taisit siis jo alottaa vapun. Klara vappen!

Äänestä

huomaa että #include hakemisto/my_test_include.h on myös validi muoto...
sinulla voi olla kääntäjän cache käytössä... kääntäjällä on myös optiot include poluista....

Äänestä

Kommentoi aloitusta


mingw-gcc_selväksi kirjoitti:

Nyt ei ole siis kyse "user includesta" eli #include "file.h"

Vaan system includesta #include



Kääntäjä: mingw-gcc 4.4.0
ympäristö: Windows XP professional

Päätin itse hieman tutkia asiaa...

Löytyi 287 sellaista hakemistoa, joissa on vähintään yksi .h -tiedosto, ja joka hakemisto on joko C:\Mingw\ tai jokin sen (suora tai epäsuora) alihakemisto.

Tein ohjelman, joka selvittää, etsitäänkö todella automaattisesti (siis ilman että gcc:lle annetaan kääntäjäoptiona hakemistoa tai hakemistoja, joista noita system includeja etsiä) kaikista em. 287 hakemistosta !

Tulos: ei etsitä.

Vain 4 ensimmäistä käännösyritystä onnistui, ja jo 5:nnen kohdalla tuli virheilmoitus: "error: my_test_include.h: No such file or directory"

Eli siis näistä neljästä hakemistosta etsitään system includeja ja tässä järjestyksessä:

C:\Mingw\include\
C:\Mingw\lib\gcc\mingw32\4.4.0\include\
C:\Mingw\lib\gcc\mingw32\4.4.0\include-fixed\
C:\Mingw\mingw32\include\

Kysymys teille lukijoille:

Pitääkö saamani tulos paikkansa, vai onko testiohjelmassani jokin virhe ?

Olin siis aiemmin laittanut kaikkiin 287:aan hakemistoon tiedoston

my_test_include.h

jonka olennaisin sisältö oli tämä:

#define test_value 1

...

#define test_value 287

(kussakin eri hakemistossa siis muuten samanlainen my_test_include.h, mutta numeroarvo kullekin yksilöllinen 1 .. 287 )

Sitten testiohjelmani ajoi gcc:n 2*287 kertaa (kukin pari: a) kääntää ja b) linkkaa DLL:ksi c- kielellä kirjoittamani DLL -kirjaston) ja kunkin kerran jälkeen lataa DLL:n LoadLibraryllä, kutsuu testifunktiota DLL:stä ja sitten FreeLibrary(Handle)

Onnistuneen käännöksen, linkityksen ja ajon jälkeen testiohjelmani poisti sen includefilen, jossa oleva arvo vastaa käännetyn DLL:n palauttamaa ja sitten silmukan seuraavaan kierrokseen - silmukka päättyy kun joko

a) kaikki 287 hakemistoa on käyty läpi

TAI

b) kääntäminen päätty virheeseen.

Tuloksena siis 4 ensimmäistä käännöstä 287 mahdollisesta menivät läpi ok, ja jo 5:nnen kohdalla includea ei siis löytynyt.

Oliko saamani tulos siis oikea vai menikö jotain odottamatonta pieleen ?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu