bonjour
existe-t-il en C (sur linux) une macro prédéfinie
donnant le nom de la fonction courante ?
Version imprimable
bonjour
existe-t-il en C (sur linux) une macro prédéfinie
donnant le nom de la fonction courante ?
non
merci pour cette réponse sans équivoque !
autre question au passage:
existe-t-il une fonction pour déterminer le type d'une variable ?
par exemple x une variable, je veux savoir si x est un entier, un float ... ?
Non plus.
Il n'y a pas d'introspection en C. Si tu as besoin de ce genre d'information, il faut passer systematiquement le type, ou faire des structures avec un champ type.
Salut,
Contrairement à Python, Java ou autre, le langage C standard ne possède pas de support runtime pour l'introspection. L'information sur les types est perdue à la compilation. Je sais qu'il existe des bibliothèque pour supporter ce genre de fonctionnalité en C++. Peut-être qu'il existe quelque chose pour le C. :google: est ton ami...
Thierry
Je pense qu'il serait "éventuellement" possible de retrouver plus ou moins le type natif d'une donnée en retrouvant (peut-être) sa limite maximum mais ce n'est qu'une idée au passage, aucune garantie que cela soit possible ;)
Pour la première question, j'ai des doutes.
Il y a peut-être une telle macro en GNUC ou en C POSIX (typiquement supporté par gcc sous Linux).
Je ne suis pas d'accord: le standard C99 définit la macro __func__. Les dernieres versions de GCC utilisent ce standard.Citation:
Envoyé par Sanguko
Cela me semble difficile en procédant de cette façon. Cette technique ne permet pas de différencier le type des variables p et number:Citation:
Envoyé par Franck.H
Si tu as absolument besoin de connaître le type d'une variable à l'exécution, la méthode proposée par Sanguko est la plus simple. Tu dois créer un structure enveloppe avec un champ type. Tu peux également utiliser le framework GObject et utiliser un style orienté objet pour créer de nouveaux types de données. Ce framework qui fait partie de la glib, et est relativement portable.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <stdio.h> #include <stdlib.h> typedef struct tagPoint { short x; short y; } Point_s; int main(void) { Point_s p; int number = 10; p.x = 15; p.y = 150; printf("Taille de p: %u\nTaille de number: %u\n", sizeof p, sizeof number); return 0; }
Thierry
Support pas complet: http://gcc.gnu.org/c99status.htmlCitation:
Envoyé par mhooreman
Thierry
En C90, non.Citation:
Envoyé par deb75
En C99 : __func__
En GNUC (gcc) : __FUNC__ (je crois, lire la doc...)
Non, et à quoi ça pourrait bien servir ? Les variables sont typées en C. Et si on fait de la programmation générique, on est prié de savoir ce qu'on fait... (il y a des techniques de programmation pour ça, basées sur enum, struct, voire union etc....)Citation:
Envoyé par deb75
Ceci dit, en GNUC, il existe typeof(), mais j'ai jamais compris à quoi ça servait et encore moins comment ça marche.
Mais je ne veux pas le savoir, ça sent la programmation de chacal...
De toutes façon, je fais du C et non du GNUC.
Ce n'est pas une macro, le préprocesseur ne connaît pas la notion de fonction, il s'agit d'une variable.Citation:
Envoyé par mhooreman
typeof(), c'est du statique, et ça peut être utile dans les macros (déclarer une variable du même type que celle passée en paramètre, etc.).
A oué, je voa...Citation:
Envoyé par Médinoc