Problème insoluble de transtypage - C - Programmation
Marsh Posté le 21-09-2008 à 09:50:29
oui mais non, t[x][y] est un type bien différent de t[z] ...
A part passer un pointeur puis recaster derrière, je vois pas comment tu peut t'en sortir.
Marsh Posté le 21-09-2008 à 11:49:47
Ouai mais c'est dangereux,
le mieux c'est d'utiliser une fonction
Code :
|
Marsh Posté le 21-09-2008 à 11:57:03
Ouais, tu as raison. J'ai deux autres alternatives mais qui sont toujours un peu moches.
La première par doublon de f() :
Code :
|
La deuxième qui est une redite du code n°3, en un peu mieux:
Code :
|
Franchement, je trouve ça bête que la norme autorise la création de (référence sur) tableaux (dim>1) en paramètre de fonction, et qu'il soit impossible d'en faire autant avec des variables automatiques.
Marsh Posté le 21-09-2008 à 12:00:11
sligor a écrit : Ouai mais c'est dangereux, |
Oui mais une fonction, c'est lent
Marsh Posté le 21-09-2008 à 12:04:57
dave_tetehi a écrit : Oui mais une fonction, c'est lent |
mais bien sur, sans profiling t'es capable de le dire ....
Sinon, j'ai déjà filer un code pour gérer proprement des tableaux multi-dim ...
Marsh Posté le 21-09-2008 à 12:05:50
dave_tetehi a écrit : |
pour la vitesse il y a toujours les inline du C99,
ou au pire les macro (mais on reste dans le moche là).
et sinon pour faire du calcul matriciel haute vitesse il vaut mieux utiliser des libraries optimisées je pense.
Marsh Posté le 21-09-2008 à 12:10:12
arreter de dire du caca
il code avec une fonction (meme si l'acces en polynome de horner est une horreur) et il bench ... on optimise pas un code sur ecran mais un code exécuté
Marsh Posté le 21-09-2008 à 13:02:09
Plutot que de caster vers une struct, cast vers un union. C'est la méthode qu'on utilise fréquemment quand on veut éviter que le compilateur se retrouve avec deux types différents pour un même pointeur dans son arbre, ce qui cause plus tard des problèmes marrants. On l'utilise plus pour caster des types simples à d'autre, cela dit, mais ca marche aussi.
Exemple:
Code :
|
Bien évidemment, c'est pas un vrai cast (on ne peut caster que vers des types scalaires, pas des agregats). Mais au moins, c'est la solution couramment retenue, et qui est propre (bien plus que de caster comme un barbare, qui entraine plus tard les problèmes que je mentionne au dessus).
sligor a écrit :
|
N'importe quoi.
Marsh Posté le 20-09-2008 à 21:37:06
Bonjour à tous,
Je rencontre fréquemment ce problème et je pense que je suis loin d'être le seul.
J'ai ça:
Je veux ça (prototype imposé):
Mais je n'ai trouvé que ça:
Ce contournement est vraiment énervant et je reste convaincu qu'une solution plus élégante existe (et plus concise aussi). J'aimerais éviter le référencement par structure ( genre: t[].x[] ). Bref, si quelqu'un possède une telle solution. Merci d'avance
Message édité par dave_tetehi le 20-09-2008 à 23:44:40