Langage C #10 - préprocesseur

FormationVidéo
1 May 201717:00

Summary

TLDRThis video script covers session number 10 on the C programming language, focusing on preprocessor directives which are essential for understanding modular programming. The instructor explains the 'include' directive for incorporating files and the 'define' directive for creating constants, offering examples like calculating prices with tax. The script also touches on avoiding infinite loops in file inclusion and the importance of these directives in creating libraries. The session aims to provide a solid foundation before delving into more complex topics like pointers in the next session.

Takeaways

  • 📄 **Include Directive**: Used to include files before the compilation process, allowing for the use of standard libraries and functions like `printf`.
  • 🔁 **Preprocessor**: A program that executes before the compilation, making changes to the code based on directives given.
  • 📊 **Define Directive**: Allows for the definition of constants, which can simplify code maintenance by centralizing value definitions.
  • 🔗 **Modularity in Programming**: The `define` directive can prevent infinite loops in file inclusion by using `ifndef` and `define` to control the inclusion process.
  • 🚫 **Prevention of Infinite Inclusions**: Using `define` with unique identifiers can prevent a file from being included more than once, avoiding compilation errors.
  • 🔍 **Conditional Compilation**: The `if`, `ifdef`, `ifndef`, and `endif` directives allow for conditional inclusion of code based on whether a constant is defined.
  • ✅ **Code Simplification**: `define` can replace not only constants but also more complex code or function calls, simplifying the source code.
  • 📈 **Macro Definitions**: `define` can be used to create macros, which are expanded by the preprocessor before the compilation.
  • 📝 **Standard Predefined Macros**: The C language provides predefined macros like `__FILE__`, `__LINE__`, and `__DATE__`, which can be used for debugging and informational purposes.
  • 🔬 **Debugging Utilities**: Constants and macros can be used to aid in debugging, such as marking the file name and line number where a function is called.
  • 📌 **Pointers Introduction**: The next session will focus on pointers, which are a fundamental concept in C and can be complex to understand but are essential for advanced programming.

Q & A

  • What is the main topic of the video session number 10?

    -The main topic of the video session number 10 is information and the C programming language, focusing on essential theoretical concepts and preprocessor directives.

  • What is a preprocessor directive?

    -A preprocessor directive is a command that is executed by the preprocessor before the actual compilation process. It allows for actions such as including files, defining constants, and other preprocessing tasks.

  • What does the '#include' directive do in C programming?

    -The '#include' directive is used to include the contents of one file into another before the compilation process. It can be used to include standard library files or user-defined header files.

  • Why is the '#define' directive useful in programming?

    -The '#define' directive is useful for defining constants and macros. It can simplify the code by replacing occurrences of a defined constant or expression with its value or the result of the expression.

  • How can '#define' be used to simplify changing a constant value across a codebase?

    -By using '#define' to set a constant value, if the value needs to be changed, it only needs to be updated in one place. The preprocessor will replace all occurrences of the constant with the new value throughout the code.

  • What is the purpose of using '#ifndef', '#define', and '#endif' in header files?

    -These directives are used to prevent header files from being included more than once in a program, which can cause infinite loops or redefinition errors. '#ifndef' checks if the header guard is not defined, '#define' sets it, and '#endif' ends the conditional block.

  • What does the '#ifdef' directive do?

    -The '#ifdef' directive is used to check if a constant or macro has been defined. If it has been defined, the code within the '#ifdef' and '#endif' block will be included in the compilation process.

  • Can '#define' be used to replace more than just constants?

    -Yes, '#define' can also be used to replace entire expressions or even function calls with their respective results, simplifying the code and potentially improving compilation speed.

  • What are some of the predefined macros provided by the C language?

    -Some predefined macros in C include '__DATE__' which represents the date of compilation, '__TIME__' for the time of compilation, and '__FILE__' for the current source file name.

  • What is the significance of the video session ending with a teaser for the next topic on pointers?

    -The teaser for the next topic on pointers indicates that pointers are a crucial and powerful concept in the C language, and the presenter aims to provide a comprehensive explanation to ensure understanding.

Outlines

00:00

📚 Introduction to Theoretical Concepts in C Programming

The script begins with an introduction to session number 10, focusing on theoretical aspects of C programming which may not involve much coding but are essential for understanding advanced topics such as arrays, structures, enumerations, and modular programming. The presenter mentions that while the session might not be as engaging visually, it lays the groundwork necessary for future learning. The importance of preprocessor directives, introduced earlier in the course, is highlighted as a fundamental concept in C programming.

05:01

🔧 Exploring Preprocessor Directives and the 'include' Directive

This paragraph delves into the functionality of preprocessor directives in C, specifically the 'include' directive which is used to incorporate files before the compilation process begins. The script explains that the preprocessor acts as a program that executes preliminary changes based on the directives provided, such as including files for standard input/output functions like printf. The 'include' directive is illustrated with examples, and the concept of modular programming is briefly touched upon, emphasizing the importance of organizing code to prevent infinite loops and maintainability.

10:01

📉 The 'define' Directive for Creating Constants in C

The script introduces the 'define' directive, which is used to define constants in C. It explains how 'define' can simplify code by replacing occurrences of a constant's name with its value, making the code more readable and easier to maintain. An example is given where the value of sales tax (TVA) is defined as a constant, allowing for easy updates if the tax rate changes. The paragraph also discusses the use of 'define' in conditional compilation to prevent infinite recursion in file inclusion and the importance of naming conventions in constant definitions.

15:02

🛠 Advanced Uses of 'define' for Code Replacement and Debugging

This section explores more advanced uses of the 'define' directive, such as replacing entire blocks of code or performing calculations. It demonstrates how 'define' can be used to simplify debugging by creating preprocessor macros for functions, allowing for easier testing and identification of bugs. The script also mentions predefined macros in C, such as __FILE__, __LINE__, and __DATE__, which are useful for tracking file names, line numbers, and compilation dates, respectively.

🔚 Wrapping Up the Session with an Overview of Preprocessor Directives

The final paragraph summarizes the key points covered in the session, focusing on the use of preprocessor directives in C programming. It reiterates the importance of directives like 'include' for file inclusion and 'define' for creating constants and preventing infinite recursion in file inclusion. The presenter also hints at the next session, which will cover pointers, a crucial and often misunderstood concept in C programming. The session concludes with a reminder of the complexity of pointers and the intention to provide a thorough explanation in the upcoming session.

Mindmap

Keywords

💡Modular Programming

Modular programming is a software design technique that emphasizes separating a program into independent, interchangeable modules, each with a well-defined interface. In the context of the video, modular programming is mentioned in relation to the use of header files and the 'include' directive, which allows for the inclusion of these modules in a C program. This facilitates code reusability and maintainability.

💡Preprocessor Directives

Preprocessor directives in C are instructions that are processed before the actual compilation of the program. They include commands such as 'include' for including header files and 'define' for creating macros. The video discusses the importance of these directives in setting up the program environment and managing code inclusion, which is fundamental to C programming.

💡Include

The 'include' directive is a preprocessor command used in C to include the contents of one file into another before the actual compilation process. It is essential for modular programming as it allows the programmer to use standard libraries and custom header files. In the script, 'include' is used to incorporate the standard input-output functions like 'printf'.

💡Define

The 'define' directive is used to define macros and constants in C. It can replace a token in the code with an expression or a value, simplifying the code and making it more maintainable. In the video, 'define' is illustrated with examples such as setting up constants for tax rates, which can be easily changed in one place if the rate varies.

💡Macro

A macro in C is a piece of code that is defined with 'define' and can be used to perform common tasks or calculations throughout the program. Macros are expanded by the preprocessor before compilation. The video script uses the example of defining a macro for a tax rate, which can simplify calculations and updates within the code.

💡Header Files

Header files in C, typically with the '.h' extension, contain function declarations and macro definitions. They are included in the source code using the 'include' directive. The video emphasizes the importance of header files for modular programming and for accessing standard library functions like those for input-output operations.

💡Compilation

Compilation is the process of translating source code written in a programming language into machine code that a computer can execute. The video script mentions that preprocessor directives are handled before the compilation step, which then creates the executable program.

💡Standard Input-Output

Standard input-output refers to the basic mechanisms provided by a programming language for input and output operations. In C, this is often managed through functions like 'printf' included from header files. The script mentions the use of 'include' to incorporate these standard functions into the program.

💡Constant

In programming, a constant is a value that cannot be altered by the program once it has been defined. The 'define' directive in C is used to create constants, which can simplify the code and make it easier to manage. The video provides the example of defining a constant for a tax rate to avoid hardcoding values throughout the program.

💡Conditional Compilation

Conditional compilation allows for including or excluding parts of code during the compilation process based on certain conditions. The video script touches on directives like 'ifdef' and 'ifndef' that can be used for conditional compilation, which is useful for managing complex codebases and avoiding infinite loops of file inclusion.

Highlights

Introduction to the theoretical aspects of programming in C, setting the stage for more complex topics like arrays and data structures.

Explanation of preprocessor directives and their role in the C programming language.

The '#include' directive is discussed, which is used to include files in the program, essential for using standard input/output functions like printf.

The '#define' directive is introduced, highlighting its use in defining constants to simplify code and avoid repetitive values.

Illustration of how '#define' can be used to create more readable code by replacing magic numbers with named constants.

The concept of modular programming is touched upon, emphasizing the importance of organizing code into header files.

Use of '#ifndef', '#define', and '#endif' to prevent infinite loops and manage file inclusions properly.

The practicality of '#define' in simplifying calculations within the code, allowing for easier modifications.

Discussion on the use of '#define' for macro functions, demonstrating its power beyond simple constant definitions.

The potential of '#define' to replace entire blocks of code, showcasing its versatility in the preprocessor stage.

Introduction to predefined macros in C, such as __FILE__, __LINE__, and others, used for debugging and logging purposes.

Highlighting the importance of understanding preprocessor directives for effective C programming.

A brief mention of the '#ifdef' and '#endif' directives for conditional compilation, which can be crucial for certain programming scenarios.

The presenter's intention to cover pointers in the next session, which are considered a fundamental and powerful feature of C.

A promise to deliver a comprehensive explanation of pointers in the upcoming session, aiming to clarify a concept often misunderstood by beginners.

An emphasis on the theoretical nature of the current session, preparing learners for more practical and complex topics in subsequent sessions.

A reminder that the video is part of a larger series, with each session building upon the last to gradually advance the viewer's understanding of C programming.

Transcripts

play00:00

[Musique]

play00:10

bonjour à tous bienvenue pour feutre

play00:12

séance numéro 10 sur l'information

play00:14

langage c c'est pas forcément ça va pas

play00:16

être en tout cas être la plus

play00:17

intéressante de toute la formation

play00:18

puisque on va parler pas mal théorique

play00:21

il n'y aura pas tellement de choses à

play00:22

vous montrer ou avoir au niveau du code

play00:23

mais céder des points essentiels en tout

play00:26

cas pour avancer sur la suite notamment

play00:27

quand on parle à des tableaux et

play00:28

d'autres structures de données quand on

play00:30

verra les structures eas énumération

play00:32

pourquoi pas et c'est là clausade

play00:34

essentiel qu'il faut connaître en

play00:35

programmation c'est pour pouvoir avancer

play00:37

donc vous dit ce sera plus intéressant

play00:38

vous montrer mais c'est bien de le

play00:40

savoir et ce sera assez rapide quand

play00:41

même puisqu'il ya pas mal de choses que

play00:43

vous avez déjà manipulé et vous avez dit

play00:45

qu'on n'y reviendrai par la suite alors

play00:46

dans la vidéo président sur la

play00:48

programmation modulaire joseph vous

play00:49

avons parlé des fameuses directives de

play00:51

préprocesseur puisque c'est le thème de

play00:52

cette vidéo là je vous avais dit que

play00:54

c'était celle qui était en fête qui

play00:56

débute et para le symbole diez et qu'on

play00:58

allait revenir dessus par la suite donc

play00:59

là vous en avez un très bon exemple un

play01:01

premier qui me connaît bien qui est le

play01:02

fameux diez include cela vous l'utilisez

play01:04

depuis le début de cette formation

play01:06

et je peux vous dire tout simplement il

play01:09

permet d'inclure des fichiers avant de

play01:11

rentrer un peu plus dans le détail

play01:12

qu'est ce qu'une directive qu'est ce que

play01:14

le prêt processeur de simplement ce

play01:15

qu'on parle de direction par le

play01:16

processeur le pré processeurs pour faire

play01:18

très très simple c'est tout simplement

play01:20

un sou programme qui va s'exécuter donc

play01:23

en poupe en premier d'accord il va

play01:24

s'exécuter avant tout en manière

play01:26

prioritaire

play01:27

il va les faire des changements opérés

play01:28

des changements suivants des directives

play01:30

que vous lui donnez donc les directives

play01:32

et les fameux dies quelque chose donc là

play01:33

par exemple va lui dire d'inclure un

play01:35

fichier mon avenir après il fait tout un

play01:37

tas de changements internes inclusion un

play01:38

tas voilà de tout un tas de paramétrage

play01:39

en fait et après seulement on à l'étape

play01:41

de la compilation celle qui va créer

play01:43

votre votre exécutable alors si vous

play01:45

voulez plus de détails un plus technique

play01:46

parce que là je vous ai pas parlé de

play01:48

quelque chose de très basique

play01:49

si vous voulez des détails de tout ça la

play01:51

formation c'est n'est pas venez pas fait

play01:52

pour ça d'accord j'aurais sur quelque

play01:53

chose d'assez basil da silva dire

play01:55

sommaire pour tous ceux qui voudraient

play01:56

en savoir un peu plus et apprendre

play01:58

apprendre à programmer on va dire de

play01:59

manière plus avancés avec ce langage

play02:01

pourront sans problème s'orienter vers

play02:03

la formation hacking qui est disponible

play02:04

sur la chaîne

play02:05

voilà sinon dans tous les cas pour le

play02:06

sait ce que je vous dirais l'a amplement

play02:08

suffisant

play02:09

donc je reviens du coup sûr mon fameux

play02:11

include donc l'une plus vous l'avez

play02:12

compris permet d'inclure un fichier vous

play02:14

savez que en mettant des chevrons on

play02:16

peut inclure un fichier dans tête des

play02:17

dames en natif dans quelque chose qui

play02:19

est intégré au langage comme la le

play02:21

standard input output donc tout ce qui

play02:23

est entrée sortie standard du langage c

play02:25

qui nous permet d'utiliser les fonctions

play02:26

printf kanev plus tard de gérer des

play02:28

fichiers ce genre de choses 106 107 100

play02:30

s'affichait en tête on ne pourrait pas

play02:31

faire tout cela ça ne marcherait pas

play02:33

donc ça c'est une directive que vous

play02:35

connaissez c'est à dire que quand on va

play02:36

nous lancer la compilation avant donc le

play02:39

processeur va se mettre en route

play02:40

il va du coup inclure ce fameux fléchi

play02:43

dans tête à notre programme qui nous

play02:44

permettra du coup d'utiliser les fonds

play02:45

de fameuse fonction printf et c'est

play02:47

parce qu'on les a pas défini même c'est

play02:48

des fonctions qui son propre langage

play02:50

et après ils compilent seulement weiss a

play02:52

su ça c'est comme ça après la

play02:53

compilation se fait après l'étape près

play02:55

processing se reprendre le terme un

play02:56

point b donc ça c'est ce que vous

play02:59

connaissez ce que vous avez déjà

play03:00

l'habitude d'utiliser donc je pas trop

play03:02

trop m'attarder dessus on va découvrir

play03:04

une nouvelle directive qui est la

play03:05

directive deee faite celle-là la dédiant

play03:07

à être plus intéressante

play03:09

la directive deee fine comme son nom

play03:10

l'indiqué elle permet de définir quelque

play03:12

chose et notamment une constante

play03:14

par exemple je pourrais très bien

play03:15

d'essayer de définir une constante et

play03:17

vers alors défini comme ça ça veut pas

play03:19

dire grand chose ça veut simplement dire

play03:20

que j'ai créé une constante que

play03:21

s'appelle tva et c'est tout donc ça

play03:23

permettrait éventuellement d'avoir des

play03:25

plus ou moins d espace en fait de deux

play03:27

noms au niveau d'un programme et là ça a

play03:28

vraiment aucune utilité

play03:30

voilà ne fait rien donc en général pour

play03:33

ce genre de deux constantes on va lui

play03:34

associe une valeur moi mettons je veux

play03:36

parler de la tva 20% mais je vais du

play03:38

coup alors j'assure des sur des valeurs

play03:40

simples je prends pas des valeurs avec

play03:41

des nombres à bien que je prends des

play03:42

valeurs en tire on va dire 20 je vais

play03:44

pas mettre 20.01 mettre fin ce qui

play03:46

permettrait par la suite on est en jeu

play03:48

c'est pas le programme d'avoir je sais

play03:50

pas - un programme qui calculerait un

play03:53

prix toutes taxes comprises

play03:54

donc on aurait pu imaginer un prix hors

play03:56

taxes ici on aurait ensuite un prix ttc

play04:00

d'accord je m -c rhodia comme ça qu'on

play04:02

va faire le calcul après et à un moment

play04:04

donné dans le programme donc cherché à

play04:06

calculer notre prix ttc

play04:07

donc ce serait quoi ce serait tout

play04:08

simplement le prix hors taxe du corps

play04:11

plus le prix hors taxes fois

play04:13

les 20% bon moment ce serait ça si je

play04:16

respecte à teva 20% la halle avantage

play04:19

c'est que enfin le problème en tout cas

play04:20

dans le code présent c'est que si un

play04:22

jour la tva je voulais la change et

play04:23

qu'elle venait à changer

play04:24

il faudrait que je modifie tous les

play04:26

endroits où j'ai mis le fameux vin pour

play04:27

les 20% par autre chose aussi a le temps

play04:29

était passé à 25

play04:30

il faudrait tout changer donc là je peux

play04:32

tout simplement utiliser ma fameuse

play04:34

constante que j'ai défini la cercle

play04:36

utiliser le la valeur j'utilise le nom

play04:38

de la constante et vera et en plus ça se

play04:40

lit bien prix hors taxes fois tva donc

play04:42

pour cent donc c'est la tva l'accord /

play04:45

son et si un jour elle passe à 25 m et

play04:48

tenter à 25%

play04:49

je regrette a modifié la ligne du 10

play04:50

fine et c'est tout une seule

play04:52

modification et ça se répercutera sur

play04:54

l'ensemble du code

play04:55

donc voila quoi ça peut servir on s'en

play04:57

servira quand on parlera des tableaux

play04:59

d'accord le define vous verrez à quoi il

play05:00

peut servir aussi l'allongé priest

play05:02

exemple là parce qu'il est très simple

play05:03

je pense tout le monde le comprend

play05:04

tenons ces calculs et des prix plus loin

play05:06

tout à comprise vous connaissez un petit

play05:07

peu voilà donc ça c'est parlant pour

play05:09

tout le monde on va aborder autre chose

play05:13

le define vous l'aviez vu notamment dans

play05:14

la séance précédente avec la

play05:16

programmation modulaire quand on a quand

play05:17

vous avez créé pardon votre propre

play05:19

fichier dans des tons pour h

play05:20

donc j'en ai fait un rapidement ici où

play05:22

je devais montrer ces fameuses lignes

play05:24

enfin en tout cas ce genre de ligne je

play05:27

mette je vais essayer de respecter la

play05:28

syntaxe en fait dans billy par exemple

play05:31

je sais pas de match voilà on va nous

play05:35

dire pourquoi il m'a dit je mets double

play05:36

dont 2 en 2 core 1,2 ensuite je mets le

play05:39

un autre nom paris fine c'est mieux l'un

play05:42

d'eux et c'est ce n'est pas pour rien

play05:44

c'est pas pour faire plus long plus

play05:46

compliqué c'est juste que les constantes

play05:48

vous allez voir au niveau du langage c

play05:49

commence par deux en deux corps dont il

play05:52

est tiré du 8 et se termine par

play05:53

autoroute au score aussi donc c'est

play05:54

souvent une convention au fait ou

play05:56

simplement une habitude on ne peut les

play05:57

marques et comment j'aurais pu très bien

play05:59

l'appeler define the bible ou totaux ou

play06:01

trucks vient tout ce que vous voulez ça

play06:03

marche évidemment tant que ici ce sont

play06:05

les mêmes vous avez dit que cela

play06:06

permettait de protéger en fait votre

play06:08

votre bibliothèque pour ne pas inclure

play06:10

le fichier de manière infinie admettons

play06:11

que vous ayez un fichier à qui veut

play06:13

inclure le fichier b et puis un fichier

play06:15

b qui veut inclure le fichier à vous

play06:17

allez avoir quelque chose qui va tourner

play06:18

en boucle ce quoi chaque fichier va

play06:19

vouloir inclure l'autre il faudrait bien

play06:21

qu'alain qui commence avant l'autre le

play06:22

problème c'est que là vous allez avoir

play06:23

une boucle infinie

play06:24

donc en faisant ça ça permet d'inclure

play06:26

les fichiers dans le bon ordre et

play06:27

surtout en tout cas de voir par exemple

play06:30

ici

play06:30

s'il voit que le define là il est déjà

play06:32

passé une fois la constante l'on va

play06:34

exister dans votre programme donc il

play06:35

saura qu'il n'a pas besoin d'un nouveau

play06:37

d'inclure ce fichier l'aps qu'il aura

play06:38

déjà fait et si la constante et notre

play06:41

define mif ndef la constante

play06:43

du coup il a défini puis il inclut votre

play06:45

fiche est ce que j'avais dit que j'avais

play06:47

dit que je vous donnerai les détails un

play06:47

peu par la suite

play06:48

eh bien les voilà ça vous permet comme

play06:50

ça tout simplement d'inclure

play06:51

correctement vos fichiers dans tête dans

play06:53

vos bibliothèques

play06:54

alors ça c'est une habitude à prendre

play06:55

quant à chaque fois vous créer un

play06:57

fichier point h

play06:57

vous mettez ces trois lignes dès le

play07:00

début ici je vous dis on peut même

play07:01

appeler bbc vous voulez 20 par rapport

play07:03

aux noms que vous avez ici peu importe

play07:04

tant que les deux noms d'ici là c'était

play07:07

pour le iphone des faits le define sont

play07:09

les mêmes c'est tout ce qui compte

play07:10

et après ne pas avoir vos fonctions

play07:12

d'accord ici voilà tout nouveau

play07:15

prototype en fait de fonction pour 27 à

play07:16

thouars gâteux prix goethe il importe

play07:20

quoi en accord mais voilà on peut

play07:21

imaginer quelque chose

play07:22

d'accord plusieurs fonctions pourront

play07:24

comme ça être utilisés non voyons define

play07:26

il fonctionne comme ça alors ça c'est

play07:27

une constante aussi enfin c'est une une

play07:29

directive parlons qui permet de faire un

play07:31

test en fait un if de diaba tiens si

play07:33

quelque chose n'est pas défini et le ndi

play07:35

vont passer la fin du lift d'accord donc

play07:36

rien devrait être compliquée à ce niveau

play07:38

là donc je vais pas non plus ma tarlé

play07:39

puisque c'est très très simple

play07:40

d'utilisation et après bon lady les

play07:42

iphone des reflets and if vous allez

play07:44

très rarement les utiliser autrement que

play07:46

pour ça et si ça vient à se présenter

play07:47

eh bien on fera en temps et en heure

play07:49

mais pour le moment ce n'est pas le pas

play07:50

le sujet donc c'est tout ce qui est à

play07:52

retenir c'est ces trois lignes là quand

play07:54

vous utilisez créer un fichier point h

play07:55

le famine tout mais ça vous le

play07:57

connaissez le define qui permet comme ça

play07:59

d'avoir des valeurs constantes alors le

play08:01

define est un petit peu plus puissant

play08:02

que ça on peut on n'est pas forcément

play08:04

mais j'aime être une valeur c'est

play08:05

simplement que le prêt processeur va

play08:07

dire tout partout dans ton code où il ya

play08:09

marqué tv en fait je le remplace par 25

play08:12

c qu'est ce qui va faire cette ligne va

play08:13

forcément disparaître puisqu'il va faire

play08:15

son boulot donc il va dire tiens des

play08:16

agents passent par 25 ans qui va faire

play08:18

ça frotte ça bon il aura fait le boulot

play08:20

donc le servira plus pour la compilation

play08:22

le dit fanny certain pour la compilation

play08:23

il sert vraiment que pour l'étape pré

play08:26

procès si ça il va inclure tout le code

play08:28

de st die au point h donc on aura tout

play08:30

le code qui sera inclus donc ça la

play08:32

compilation ce sera évidemment pas pris

play08:33

en compte certains la compilation c'est

play08:34

un peu ça qui va passer la main

play08:35

et en fait vous aurez globalement ça

play08:37

avec bien évidemment d'autres choses en

play08:39

plus mais encore une fois on reste très

play08:40

basique puisque préprocesseur fait

play08:41

beaucoup beaucoup de choses en fait et

play08:42

des choses assez complexe mais tout ça

play08:44

je l'expliqué dans la formation hacking

play08:45

est là-bas préfet tout leur emplacement

play08:48

vous voyez ce sont des valeurs en dur

play08:49

donc c'est simplement du remplacement

play08:50

faut pas imaginer que les

play08:51

transformations qui sont faites à la

play08:52

compilation lancé avant le complot

play08:55

compile hôtelier va récupérer l'huile

play08:56

aura pas de constantes des verts elle

play08:57

n'existera pas pour le compilateur lui

play08:59

louera 25 où il aura vingt où il aura ce

play09:01

que vous avez définies dans le code

play09:03

source à la base c'est là toute la

play09:05

différence

play09:05

donc ça c'est à sa voix du coup define

play09:08

peut remplacer tout un ensemble

play09:10

d'instructions il peut remplacer en fait

play09:11

du code tout simplement scène mais deux

play09:13

je sais pas là on va prendre un exemple

play09:14

tout bête à faire ça alors c'est

play09:17

complètement inutile ce que je fais ici

play09:18

d'accord mais vous allez voir

play09:21

histoire de bien comprendre voilà on

play09:26

peut faire ceci

play09:27

alors si print est savons parle pas

play09:28

d'accord vous n'avez pas le mot

play09:30

admettons on dit qu'un emprunteur pour

play09:32

afficher le tlm paraît bande peut

play09:33

choisir par exemple de dire qu'est ce

play09:36

qu'on peut dire on peut dire par exemple

play09:37

affiche oui c'est ça un fichier d'accord

play09:40

correspond à printf ça veut simplement

play09:43

dire que partout où il va voir le mot en

play09:47

fait donc ce que je fais moi pardon

play09:50

c'est pas ça si c'est çà ou là

play09:52

partout où il va voir le mot affiché il

play09:55

va le remplacer par printf le coup là je

play09:58

peux faire ça automatiquement

play10:01

alors j'essaie cs 10 c'est ça

play10:05

voilà je vais faire preuve les vous

play10:07

voyez que le le bonjour fonctionne

play10:09

pourtant affiché n'est pas une fonction

play10:10

stand a tout simplement parce qu'en fait

play10:13

le pré processeurs a vu cette directive

play10:15

il a fait ça hop il a viré ça puisqu'il

play10:19

y en a plus besoin et pour le

play10:20

compilateur il compilateur mont s'est

play10:22

occupé également dans le chien est bien

play10:24

évidemment et du coup a retrouvé un code

play10:25

correct et le printf le compilateur le

play10:27

connaît bien

play10:28

d'accord c'est vraiment une aide en fait

play10:29

au niveau développement c'est assez

play10:31

utile le compilateur lui les define tout

play10:33

ce qui est direct et très processeur il

play10:34

ne lira pas de toute manière c'est pas

play10:36

pour lui mais c'est un compilateur c'est

play10:37

pas un trait processeur voilà c'est tout

play10:40

ce que je voulais vous dire

play10:40

alors on peut aller beaucoup plus loin

play10:42

on peut carrément s'amuse à faire c'est

play10:43

un jeu vous montrer assez des trucs

play10:45

assez assez fou on peut faire par

play10:46

exemple coucou et qu'on peut mettre

play10:48

voilà tiens c'est carrément inutile je

play10:52

vous dis tout de suite je n'ai pas de

play10:54

point virgule à la fin parce que je

play10:55

préfère le mettre pour rester respecter

play10:57

les instructions afin de réguler et

play10:59

voilà ça va être la même chose

play11:01

oui c'est complètement ridicule ça ça a

play11:04

rien dans le scala et c'est pour montrer

play11:05

que ça fonctionne c'est des choses qui

play11:07

sont possibles donc des fois ça peut

play11:08

servir notamment quand on a des des noms

play11:10

de fonctions qui sont très très

play11:11

longtemps moi par exemple j'ai déjà

play11:12

programmés sur la playstation portable

play11:13

et on avait dénombré pour afficher du

play11:15

texte tout simplement donc à l'écran on

play11:18

avait une fonction psp des bugs screen

play11:20

printf donc c'était super lent donc

play11:22

c'était quelque chose comme ça a raconté

play11:24

psp psp pour la playstation portable des

play11:28

bugs un des bugs screen printf donc

play11:33

c'était super et du coup c'était souvent

play11:35

qu'on faisait ça la prime texte est

play11:38

comme ça à chaque fois qu'on mettait

play11:39

printf et le remplacer par le nom de la

play11:41

fonction en fait pour la playstation

play11:43

portable parce que le langage c'est

play11:44

assez pro fonctions en fait puisque sa

play11:46

propre bibliothèque ses propres fichiers

play11:47

dans tête pour la console de jeux voilà

play11:49

donc c'était les petites choses comme ça

play11:50

qui pourrait être intéressante s'éviter

play11:52

de retaper tout le temps sort c'était

play11:53

quand même un petit peu long et voyez il

play11:55

ya pas mal de majuscule à chaque fois à

play11:56

chaque bébé de mots on ça pouvait prêter

play11:58

à pas mal d'erreurs en fait à la longue

play12:00

aussi après pas mal d'heures de

play12:01

développement

play12:02

voilà pour le define vous avez dit du

play12:05

coup je vous ai parlé de constantin je

play12:06

dis voilà que ça pouvait être très utile

play12:08

on peut faire des calculs aux siens ici

play12:10

d'accord on peut très bien pourquoi j'en

play12:12

sais rien par exemple r je sais pas moi

play12:17

on peut très bien avoir une un design

play12:20

longueur define largeur inscrits chez

play12:27

n'importe quoi et ce serait du coup

play12:29

alors entre parenthèses comme ça on est

play12:30

sûr qu aura pas de deux choses bizarres

play12:33

voilà on peut très bien faire ceci

play12:34

ce qui fait du coup quand vous utile

play12:36

quand vous ferez afficher la constante

play12:38

air dans un prime tf1 avec 1% b puisque

play12:40

si ce sont des entier il vous fera le

play12:42

calcul c'est tout à fait possible

play12:43

puisqu'il va remplacer par tous il ya le

play12:44

truc r par longueur x largeur

play12:46

donc ça fonctionnera donc voilà faut

play12:48

vraiment comprendre saint-leu dit fan il

play12:50

fait que du remplacement pour le prêt

play12:51

processeur de calcul de lune valeur en

play12:54

une autre tout simplement donc un

play12:55

contenu en un autre c'est juste ça voilà

play12:57

pour le define comme je vous ai parlé de

play13:00

constantes aujourd'hui nous a montré

play13:01

quelques unes intéressante je vais juste

play13:03

les présenter très rapidement parce que

play13:05

sinon ça va rallonger encore la vidéo

play13:06

inutilement et qu'en plus on n'en a pas

play13:07

l'utilité tout de suite en pratique et

play13:09

qui sont à connaître je vais démettre

play13:10

d'ailleurs ici

play13:14

je mets donc des constantes alors les

play13:18

concentre prédéfinis entrées des films

play13:21

du langage c voilà nous avait notamment

play13:26

la constante alors double ander score

play13:27

pour ça que j'avais dit que c'est un peu

play13:28

une norme on a failli l'accord n'ont pas

play13:33

besoin de vous dire que c'est le nom du

play13:34

fichier en fait du fichier source

play13:37

d'accord on a line clim du fichier par

play13:43

laquelle bien sûr vous êtes en train de

play13:44

demander d'afficher la constantin

play13:46

logique on va voir ça comme ça c'est

play13:49

l'île d'haïti date de compilation et on

play13:55

va voir le fameux time heures de

play14:00

compilation par horaires sont simples

play14:01

bise

play14:01

voilà donc je vais pas je peux vous

play14:04

faire des exemples itéra je vous en

play14:05

mettre un seul

play14:06

on peut simplement faire ceci par

play14:07

exemple fichiers un petit pourcent s

play14:11

puisque c'est une chaîne de caractères

play14:13

mais on verra plus tard d'accord si on

play14:14

n'a pas encore les chaînes de caractères

play14:16

que vous mettez % s sans forcément

play14:18

comprendre pour le moment on le verra

play14:19

plus tard et vous faites simplement ceci

play14:21

voilà c'est une constante pour la fiche

play14:23

bêtement comme ceux-ci hop comme une

play14:26

variable en fait

play14:27

print d'accord oui j'aime bien des

play14:29

choses genre il utilise un define la

play14:34

fonction je vais y arriver

play14:37

et voyez bien que mon fichier s'appelle

play14:40

s10 donc pour la séance 10 points c'est

play14:41

donc le jeu pajot faire le test pour

play14:44

toussaint pour tout ça peut ça va pour

play14:45

des débogages tant de choses notamment

play14:46

repéré un bug on est dans des fonctions

play14:49

de test

play14:49

et voilà vous voyez comment ça

play14:51

fonctionne c'est très simple je vous les

play14:52

ntic au cas où si vous avez besoin de

play14:54

prendre des notes pour récupérer ses on

play14:57

va terminer enfin va terminer non je

play14:59

crois que j'ai fait plus ou moins tous

play15:00

qu'après je vois pas trop ce qu'il faut

play15:01

montrer ses failles vous parlez d'une

play15:03

cloud c'était le plus c'était plus

play15:04

important au bout de 6 depuis le début

play15:05

il y avait le fameux define nous a vu

play15:06

qu'on pouvait remplacer par des valeurs

play15:08

remplacent est carrément par une

play15:09

fonction par des calculs il fallait

play15:11

connaître le fameux iphone dev define

play15:13

endif par rapport au fichier

play15:15

voilà donc l'écouter on a fait le tour

play15:16

un jeu pas vous là je parle de tenir

play15:18

plus longtemps entre guillemets

play15:20

et tout ce qu'ils avaient à voir en tout

play15:21

cas au niveau des directives de proposer

play15:23

seulement six fois vous résumer tout ça

play15:24

vous le vous savez vous avez de quoi

play15:26

inclure des fichiers soient des fichiers

play15:28

natifs soient vos propres de

play15:29

bibliothèque

play15:30

vous avez de quoi définir des constantes

play15:32

ça sert en général à ça et vous pouvez

play15:34

protéger notamment éviter les un client

play15:36

infini où les problèmes d'inclusion

play15:38

quand vous créez des bibliothèques avec

play15:39

ses trois petits directives et vous

play15:41

mettez comme ça tout au prototype

play15:42

rentrer et comme ça il y aura pas de

play15:43

problème et cela va clore du coup notre

play15:46

petite séance 10 pour retrouver la

play15:48

prochaine fois pour la séance 11

play15:50

donc on parlera évidemment des pointeurs

play15:51

qui est d'une émotion les plus

play15:53

importants si ce n'est la plus

play15:55

importante du langage

play15:56

alors j'espère que ce sera

play15:57

compréhensible pour vous parce qu'avoir

play15:58

du temps elle est très très mal comprise

play16:00

des gens qu'ils apprennent alors

play16:02

peut-être mal expliqué ou peut-être que

play16:03

malgré les bonnes explications alpes est

play16:05

compliqué à assimiler j'en sais rien moi

play16:07

j'essaierai d'être clair alors ce serait

play16:08

une vie dont je pense un peu longue

play16:09

la prochaine puisque il ya beaucoup de

play16:13

choses à raconter que le sait mieux de

play16:14

prendre le temps pour que ce soit

play16:15

compris plutôt que de bazarder intrigué

play16:17

mais 110 minutes épiques du coup vous

play16:19

galérez vous galérez derrière donc la

play16:21

vidéo est un peu voilà sera un petit peu

play16:22

long mais vous allez apprendre pas mal

play16:24

de choses et vous verrez que les

play16:25

pointeurs sont tous tout en fait toute

play16:27

la puissance du langage c voilà voilà

play16:29

à très bientôt tout le monde et puis

play16:30

c'était pas à vous entraîner à poser des

play16:32

questions si vous avez bien compris

play16:33

normalement cette vidéo est assez simple

play16:34

en pas mal de théorique mais c'est assez

play16:37

simple en tout cas par rapport à ce qui

play16:38

vous attend pour la suite allez à

play16:40

bientôt

play16:42

[Musique]

Rate This

5.0 / 5 (0 votes)

الوسوم ذات الصلة
C ProgrammingPreprocessor DirectivesModular CodingInclude DirectiveDefine DirectiveConstant ValuesCode OptimizationProgramming TutorialSoftware DevelopmentEducational Content
هل تحتاج إلى تلخيص باللغة الإنجليزية؟