GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

[C] include qui semble ignoré

2 participants

Aller en bas

[C] include qui semble ignoré Empty [C] include qui semble ignoré

Message par Tryphon Mer 1 Aoû 2018 - 22:13

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 :

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':
Sad.text.startup+0x3ec): undefined reference to `clamp'
Sad.text.startup+0x972): undefined reference to `clamp'
Sad.text.startup+0x9c8): undefined reference to `clamp'
Sad.text.startup+0xb5c): undefined reference to `is_in_range'
Sad.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
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

[C] include qui semble ignoré Empty Re: [C] include qui semble ignoré

Message par Stef Mer 1 Aoû 2018 - 22:29

Rapidement comme ça je ne vois pas vraiment... tout a l'air ok Confused
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 Mr. Green  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
Stef
Interne
Interne

Masculin Nombre de messages : 5082
Age : 44
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

[C] include qui semble ignoré Empty Re: [C] include qui semble ignoré

Message par Tryphon Mer 1 Aoû 2018 - 23:11

Je viens juste de m'en rendre compte !

Ma faute, je vais l'appeler toolset [C] include qui semble ignoré 435303
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum