954,500 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

a few questions about C++ source code

Hello,

I have, before my eyes, source code, but I can't understand certain parts of
it:

1. #pragma - what does it mean, is it some directive for precompilator?.
for example: what does it mean - #pragma resource "*.dfm;" or
or #pragma package (smart_init);?.
2. what does word __fastcall mean in expression
int __fastcall ABC:SetABC() {};
3. what does expression: k = 1 << i; mean?.
4. what is the effect of running following line of text:
SignalForm->CheckBox20->Enabled = (maskIO & 0x08) ? true :
false;
I particularly mean expression in parenthesis: (maskIO & 0x08) what
does it mean?.
Shouldn't there be applied bit conjunction operator?.

Thank You for answer.

mac1234mac
Newbie Poster
1 post since Sep 2008
Reputation Points: 10
Solved Threads: 0
 

> #pragma - what does it mean
to understand what #pragma is see: http://msdn.microsoft.com/en-us/library/d9x1s805(vs.71).aspx
for the specific #pragma directives that are in your code, refer to your compiler docs.

> what does word __fastcall mean
__fastcall is an implementation-defined keyword in microsoft and several other compilers. it specifies a particular calling convention for a function.
http://msdn.microsoft.com/en-us/library/6xa169sk(VS.71).aspx

> what does expression: k = 1 << i; mean?.
> (maskIO & 0x08) what does it mean?.
these are C/C++ bitwise operators. http://www.cprogramming.com/tutorial/bitwise_operators.html

vijayan121
Posting Virtuoso
1,606 posts since Dec 2006
Reputation Points: 1,159
Solved Threads: 287
 

I will try to answer these .. but I'd suggest looking them up online also.

1. #pragma is a compiler directive. For example #pragma pack(n) .. specifies the packing alignment for structures and unions (ie 1 byte boundary, 4 byte boundary and so forth).
here is some more information.

2. for _fastcall see here

3. k = 1 << i : << is the shift left operator. In this case you are left shifting 1 by i bits, and assigning the result to k.

For example if i = 3, then you are doing 0000 00001 << 3 = 0000 0100 = 4

4. maskIO & 0x08 does a bitwise AND of hexadecimal 08 with maskIO. Lets assume maskIO is 10.

0000 1010
AND 0000 1000
------------
0000 1000

so if maskIO has the same bits ON as 0x08 then your signal is set to enabled.

See here for more info about Bitwise Operations.

stilllearning
Posting Whiz
309 posts since Oct 2007
Reputation Points: 161
Solved Threads: 43
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You