Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

c programming help,preprocessor

Status
Not open for further replies.

dizgah

Member level 5
Member level 5
Joined
Nov 8, 2009
Messages
91
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Location
iran-8par
Activity points
2,049
hi every body
what does this code do ?
Code:
#define k1 [B]((uint16_t)0x0000)[/B]
im familiar with duty of define preprocessor instruction,but i dont know what does bold section do.
tnks

- - - Updated - - -

my second question is:
Code:
void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct)
in above function why we declare input variable in this method ,and dont declare usual like:
Code:
voide m1(int1,int2);
tnks again
 

#define creates as macro.

In the line mentioned
#define k1 ((uint16_t)0x0000)

A simple k1 can be used in a code when ever ((uint16_t)0x0000) is used.

Using this identifier the code can be made readable.

I would prefer to you something more readable Identifier than k1.
 
  • Like
Reactions: dizgah

    dizgah

    Points: 2
    Helpful Answer Positive Rating
tnks i know, k1 was only for example
as i said i know function of define preprocessor ,my ques is what does
Code:
((uint16_t)0x0000)
do ?
as i know that say declare k1 equal with 0x0000 and 0x0000 is a 2byte size variable(unsigned int ),am i true?
then why we dont write
Code:
 #define k1 0x0000
cant compiler know size of constant/var from number of digits?
and we say it to compiler with this method ?
--------------
whats my second ques answer ?
tnks
 

((uint16_t)0x0000)

With the above line you mention that it is a 16 bit value i.e 2Bytes.

You are typecasting the value to a 16bit where you have only assigned 4bits. Remaining bits are set to zero by type casting as above.

For second question :

There is a called function and calling function.
Called function : When one piece of code invokes or calls a function.
Example voide m1(int1,int2);
Calling funciton : When called by a function, this piece of code tells what needs to be done.
Example void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct)

In the above calling function, SPI_TypeDef and SPI_InitTypeDef are defined in the code as structures. SPIx and SPI_InitStruct are initialised to create a temp value

SPIx. a = 123; SPIx.b = 456; ... etc.

In called function.. int1 and int2 initialized in main and are have a scope of using those variables in whole program. These two examples are not the perfect way to look at the called and calling function.

Hope am being clear .....
 
  • Like
Reactions: dizgah

    dizgah

    Points: 2
    Helpful Answer Positive Rating
In

Code C - [expand]
1
SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct)



SPI_TypeDef* is a pointer to SPI_TypeDef type and SPI_InitTypeDef* is a pointer to SPI_InitTypeDef type.

SPIx and SPI_InitStruct are other two types of data types. They are defined else where in the code.

You have to post the full code for better answer.
 
  • Like
Reactions: dizgah

    dizgah

    Points: 2
    Helpful Answer Positive Rating
Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top