[C] include qui semble ignoré
2 participants
Page 1 sur 1
[C] include qui semble ignoré
Peut-être qu'un maître du C peut m'aider :
j'ai codé deux macros que j'utilise souvent (on se fout de ce qu'elle font, c'est pas le problème) et je les ai mises dans un fichier tools.h :
Quand je compile mon code, j'obtiens, par exemple :
Puis, au linkage :
Or, camera.c contient bien un :
Pourquoi ça ne marche pas ?
j'ai codé deux macros que j'utilise souvent (on se fout de ce qu'elle font, c'est pas le problème) et je les ai mises dans un fichier tools.h :
- Code:
#ifndef _TOOLS_H_
#define _TOOLS_H_
#define is_in_range(x, a, b) ((x) >= (a)) && ((x) < (b))
#define clamp(x, a, b)\
(((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)))
#endif
Quand je compile mon code, j'obtiens, par exemple :
GCC a écrit:C:/SGDK134/bin/gcc -m68000 -Wall -fno-builtin -Iinc -Isrc -Ires -IC:/SGDK134/inc -IC:/SGDK134/res -BC:/SGDK134/bin -O3 -fuse-linker-plugin -fno-web -fno-gcse -fno-unit-at-a-time -fomit-frame-pointer -flto -c src/camera.c -o out/src/camera.o
src/camera.c: In function 'camera_set_focus':
src/camera.c:130:6: warning: implicit declaration of function 'clamp' [-Wimplicit-function-declaration]
x = clamp(fix32ToInt(obj->x) - 128, 0, current_stage.pwidth - 320);
Puis, au linkage :
GCC, toujours lui, a écrit:C:/SGDK134/bin/gcc -BC:/SGDK134/bin -n -T C:/SGDK134/md.ld -nostdlib out/sega.o @out/cmd_ C:/SGDK134/lib/libmd.a C:/SGDK134/lib/libgcc.a -o out/rom.out
C:\Users\xxxx\AppData\Local\Temp\cczl66At.ltrans0.ltrans.o: In function `main':.text.startup+0x3ec): undefined reference to `clamp' .text.startup+0x972): undefined reference to `clamp' .text.startup+0x9c8): undefined reference to `clamp' .text.startup+0xb5c): undefined reference to `is_in_range' .text.startup+0xce0): undefined reference to `clamp'
make.exe": *** [out/rom.out] Error 1
Or, camera.c contient bien un :
- Code:
#include "tools.h"
Pourquoi ça ne marche pas ?
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: [C] include qui semble ignoré
Rapidement comme ça je ne vois pas vraiment... tout a l'air ok
Bon par contre depuis que SGDK utilise GCC 6, tu peux te permettre de remplacer tes macros par des fonctions, vu leur taille et surtout avec -O3 elles seront forcément "inlinées" et limite le code s'en trouvera que plus optimisé encore (avec des macros tu as le risque que chaque argument soit réévalué).
Edit: Bon j'ai pigé le problème, en fait SGDK a aussi une unité tools.c du coup le TOOLS_H_ est déjà défini par SGDK, désolé ^^ C'est vrai que j'aurai du éviter d'utiliser des noms d'unité aussi génériques :-/
Bon par contre depuis que SGDK utilise GCC 6, tu peux te permettre de remplacer tes macros par des fonctions, vu leur taille et surtout avec -O3 elles seront forcément "inlinées" et limite le code s'en trouvera que plus optimisé encore (avec des macros tu as le risque que chaque argument soit réévalué).
Edit: Bon j'ai pigé le problème, en fait SGDK a aussi une unité tools.c du coup le TOOLS_H_ est déjà défini par SGDK, désolé ^^ C'est vrai que j'aurai du éviter d'utiliser des noms d'unité aussi génériques :-/
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: [C] include qui semble ignoré
Je viens juste de m'en rendre compte !
Ma faute, je vais l'appeler toolset
Ma faute, je vais l'appeler toolset
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Sujets similaires
» [ACH] Big box série Civilization du 1 au 4 il me semble
» [Estim] Accessoire NES pas super courant ! (il me semble...)
» Demande d'avis sur une manette 64 qui me semble modifiée :/
» Cela vous semble-t-il etre un prix correct ?
» Problème Atari 7800 semble avoir grillé le module de connexion pour la télé
» [Estim] Accessoire NES pas super courant ! (il me semble...)
» Demande d'avis sur une manette 64 qui me semble modifiée :/
» Cela vous semble-t-il etre un prix correct ?
» Problème Atari 7800 semble avoir grillé le module de connexion pour la télé
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum