Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage,
il est aussi sans effet quand je le compile en mode release sachant que la
fonction se trouve
dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans
avoir à déplacer
la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Wirtel
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage, il est aussi sans effet quand je le compile en mode release sachant que la fonction se trouve dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans avoir à déplacer la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ; http://sivallerstatic.no-ip.org/teste.zip
1) Quel compilateur ?
2) Quel OS ? 3) Quel IDE ? 4) Quel rapport avec le C++ standard ?
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage,
il est aussi sans effet quand je le compile en mode release sachant que la
fonction se trouve
dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans
avoir à déplacer
la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ;
http://sivallerstatic.no-ip.org/teste.zip
1) Quel compilateur ?
2) Quel OS ?
3) Quel IDE ?
4) Quel rapport avec le C++ standard ?
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage, il est aussi sans effet quand je le compile en mode release sachant que la fonction se trouve dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans avoir à déplacer la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ; http://sivallerstatic.no-ip.org/teste.zip
1) Quel compilateur ?
2) Quel OS ? 3) Quel IDE ? 4) Quel rapport avec le C++ standard ?
Pierre Maurette
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage, il est aussi sans effet quand je le compile en mode release sachant que la fonction se trouve dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans avoir à déplacer la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ; http://sivallerstatic.no-ip.org/teste.zip
Tout d'abord, pour tester votre sortie asm en release, vous avez la famille de commutateurs /FA.., par exemple /FAcs. Sous VS .NET 2003, c'est dans les propriétés du projet, onglet C/C++ - "Fichiers de sortie". Vous évitez ainsi le _asm int 3, ce qui n'est peut-être pas innocent. En effet, certains compilateurs (mais sans doute pas VC7.0) n'optimisent plus quand ils tombent sur un bloc asm, refuasant d'en analyser le contenu.
Si vous mettez la fonction dans le bloc du main(), ça va effectivement inliner. Mais comme VC n'est pas idiot, il va remplacer mil(8, 2) par (long)160 et vous ne verrez pas grand'chose. Vous pouvez voir ce qui se passe avec:
volatile long a; volatile unsigned short m = 8; volatile unsigned short n = 2; ... a=mil(m,n);
Regardez ce que dit la doc sur inline, __inline et surtout __forceinline.
-- Pierre
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage,
il est aussi sans effet quand je le compile en mode release sachant que la
fonction se trouve
dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans
avoir à déplacer
la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ;
http://sivallerstatic.no-ip.org/teste.zip
Tout d'abord, pour tester votre sortie asm en release, vous avez la
famille de commutateurs /FA.., par exemple /FAcs. Sous VS .NET 2003,
c'est dans les propriétés du projet, onglet C/C++ - "Fichiers de
sortie". Vous évitez ainsi le _asm int 3, ce qui n'est peut-être pas
innocent. En effet, certains compilateurs (mais sans doute pas VC7.0)
n'optimisent plus quand ils tombent sur un bloc asm, refuasant d'en
analyser le contenu.
Si vous mettez la fonction dans le bloc du main(), ça va effectivement
inliner. Mais comme VC n'est pas idiot, il va remplacer mil(8, 2) par
(long)160 et vous ne verrez pas grand'chose. Vous pouvez voir ce qui se
passe avec:
volatile long a;
volatile unsigned short m = 8;
volatile unsigned short n = 2;
...
a=mil(m,n);
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage, il est aussi sans effet quand je le compile en mode release sachant que la fonction se trouve dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans avoir à déplacer la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ; http://sivallerstatic.no-ip.org/teste.zip
Tout d'abord, pour tester votre sortie asm en release, vous avez la famille de commutateurs /FA.., par exemple /FAcs. Sous VS .NET 2003, c'est dans les propriétés du projet, onglet C/C++ - "Fichiers de sortie". Vous évitez ainsi le _asm int 3, ce qui n'est peut-être pas innocent. En effet, certains compilateurs (mais sans doute pas VC7.0) n'optimisent plus quand ils tombent sur un bloc asm, refuasant d'en analyser le contenu.
Si vous mettez la fonction dans le bloc du main(), ça va effectivement inliner. Mais comme VC n'est pas idiot, il va remplacer mil(8, 2) par (long)160 et vous ne verrez pas grand'chose. Vous pouvez voir ce qui se passe avec:
volatile long a; volatile unsigned short m = 8; volatile unsigned short n = 2; ... a=mil(m,n);
Regardez ce que dit la doc sur inline, __inline et surtout __forceinline.
-- Pierre
Pierre Maurette
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage, il est aussi sans effet quand je le compile en mode release sachant que la fonction se trouve dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans avoir à déplacer la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ; http://sivallerstatic.no-ip.org/teste.zip
1) Quel compilateur ?
2) Quel OS ? 3) Quel IDE ? Tout est là : http://sivallerstatic.no-ip.org/teste.zip
4) Quel rapport avec le C++ standard ? ISO/IEC 14882:1998(E) §7.1.2.1 et suivants ...
-- Pierre
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage,
il est aussi sans effet quand je le compile en mode release sachant que la
fonction se trouve
dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans
avoir à déplacer
la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ;
http://sivallerstatic.no-ip.org/teste.zip
1) Quel compilateur ?
2) Quel OS ?
3) Quel IDE ?
Tout est là : http://sivallerstatic.no-ip.org/teste.zip
4) Quel rapport avec le C++ standard ?
ISO/IEC 14882:1998(E) §7.1.2.1 et suivants ...
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage, il est aussi sans effet quand je le compile en mode release sachant que la fonction se trouve dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans avoir à déplacer la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ; http://sivallerstatic.no-ip.org/teste.zip
1) Quel compilateur ?
2) Quel OS ? 3) Quel IDE ? Tout est là : http://sivallerstatic.no-ip.org/teste.zip
4) Quel rapport avec le C++ standard ? ISO/IEC 14882:1998(E) §7.1.2.1 et suivants ...
-- Pierre
Pierre Maurette
(supersedes )
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage, il est aussi sans effet quand je le compile en mode release sachant que la fonction se trouve dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans avoir à déplacer la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ; http://sivallerstatic.no-ip.org/teste.zip
Tout d'abord, pour tester votre sortie asm en release, vous avez la famille de commutateurs /FA.., par exemple /FAcs. Sous VS .NET 2003, c'est dans les propriétés du projet, onglet C/C++ - "Fichiers de sortie". Vous évitez ainsi le _asm int 3, ce qui n'est peut-être pas innocent. En effet, certains compilateurs (mais sans doute pas VC7.0) n'optimisent plus quand ils tombent sur un bloc asm, refuasant d'en analyser le contenu.
Si vous mettez la fonction dans la même unité que main(), ça va effectivement inliner. Mais comme VC n'est pas idiot, il va remplacer mil(8, 2) par (long)160 et vous ne verrez pas grand'chose. Vous pouvez voir ce qui se passe avec:
volatile long a; volatile unsigned short m = 8; volatile unsigned short n = 2; ... a=mil(m,n);
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage,
il est aussi sans effet quand je le compile en mode release sachant que la
fonction se trouve
dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans
avoir à déplacer
la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ;
http://sivallerstatic.no-ip.org/teste.zip
Tout d'abord, pour tester votre sortie asm en release, vous avez la
famille de commutateurs /FA.., par exemple /FAcs. Sous VS .NET 2003,
c'est dans les propriétés du projet, onglet C/C++ - "Fichiers de
sortie". Vous évitez ainsi le _asm int 3, ce qui n'est peut-être pas
innocent. En effet, certains compilateurs (mais sans doute pas VC7.0)
n'optimisent plus quand ils tombent sur un bloc asm, refuasant d'en
analyser le contenu.
Si vous mettez la fonction dans la même unité que main(), ça va
effectivement inliner. Mais comme VC n'est pas idiot, il va remplacer
mil(8, 2) par (long)160 et vous ne verrez pas grand'chose. Vous pouvez
voir ce qui se passe avec:
volatile long a;
volatile unsigned short m = 8;
volatile unsigned short n = 2;
...
a=mil(m,n);
Voici un mini projet avec la directive inline SANS EFFET.
Il est sans effet en mode Debug , ok il s'agit d'un mode de debuggage, il est aussi sans effet quand je le compile en mode release sachant que la fonction se trouve dans un autre fichier .cpp
Comment faut t'il faire pour que la directive __inline aie son effet sans avoir à déplacer la fonction en question sur le même fichier .cpp ?
Ouvrir ce mini-projet et tester avec F5 en mode release
Merci ; http://sivallerstatic.no-ip.org/teste.zip
Tout d'abord, pour tester votre sortie asm en release, vous avez la famille de commutateurs /FA.., par exemple /FAcs. Sous VS .NET 2003, c'est dans les propriétés du projet, onglet C/C++ - "Fichiers de sortie". Vous évitez ainsi le _asm int 3, ce qui n'est peut-être pas innocent. En effet, certains compilateurs (mais sans doute pas VC7.0) n'optimisent plus quand ils tombent sur un bloc asm, refuasant d'en analyser le contenu.
Si vous mettez la fonction dans la même unité que main(), ça va effectivement inliner. Mais comme VC n'est pas idiot, il va remplacer mil(8, 2) par (long)160 et vous ne verrez pas grand'chose. Vous pouvez voir ce qui se passe avec:
volatile long a; volatile unsigned short m = 8; volatile unsigned short n = 2; ... a=mil(m,n);