Click here to Skip to main content
15,507,293 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: moving graphics in a win32 c++ window Pin
Calin Negru10-Aug-22 2:58
Calin Negru10-Aug-22 2:58 
GeneralRe: moving graphics in a win32 c++ window Pin
Richard MacCutchan10-Aug-22 3:01
mveRichard MacCutchan10-Aug-22 3:01 
QuestionFileMapping book exmple goes in loop Pin
coco2438-Aug-22 9:48
coco2438-Aug-22 9:48 
AnswerRe: FileMapping book exmple goes in loop Pin
Mircea Neacsu8-Aug-22 11:35
mvaMircea Neacsu8-Aug-22 11:35 
GeneralRe: FileMapping book exmple goes in loop Pin
coco2438-Aug-22 12:45
coco2438-Aug-22 12:45 
GeneralRe: FileMapping book exmple goes in loop Pin
Mircea Neacsu8-Aug-22 12:47
mvaMircea Neacsu8-Aug-22 12:47 
Questiondefining a function with #define Pin
coco24330-Jul-22 10:03
coco24330-Jul-22 10:03 
AnswerRe: defining a function with #define Pin
Mircea Neacsu30-Jul-22 10:54
mvaMircea Neacsu30-Jul-22 10:54 
No, it is not a function, it is a macro definition. While, in your case a function defined as:
C++
int evenbyte (int i) {return (i+7)/8*8;}
would do the same thing, there is an important difference: a macro definition is expanded at compile time while a function is compiled and later on called at runtime.

When to use one over the other is a question of optimization speed vs memory: a macro definition like your would not incur the overhead of a call but might produce larger code. Meanwhile a function definition would produce smaller code but might take longer to execute.

To solve these type of issues, C++ has introduced inline functions, so in C++ you can write
C++
inline int evenbyte (int i) {return (i+7)/8*8;}
and you leave the compiler the choice of expanding it inline (like a macro definition) or make it a function and call it.

One more thing: the macro definition is insensitive to the type of argument. That is both a good thing and a bad thing like in the examples below:
C++
int i1 = 3;
int e1 = EVENBYTE (i1); //calling macro with an int argument yields an int result
long i2 = 129;
long e2 = EVENBYTE (e2); //calling macro with a long argument yields a long result

int e3 = EVENBYTE ("abc"); //generates some obscure error message

To accomplish the same thing in C++ you would have to use a function template:
C++
template <typename T>
T evenbyte (T i) { return (i+7)/8*8;}

Mircea

GeneralRe: defining a function with #define Pin
trønderen30-Jul-22 13:46
trønderen30-Jul-22 13:46 
GeneralRe: defining a function with #define Pin
Greg Utas30-Jul-22 14:58
mveGreg Utas30-Jul-22 14:58 
AnswerRe: defining a function with #define Pin
Randor 30-Jul-22 10:55
professional Randor 30-Jul-22 10:55 
GeneralRe: defining a function with #define Pin
coco2433-Aug-22 10:01
coco2433-Aug-22 10:01 
QuestionHow to read an xlsx file using CDatabase Pin
Sampath57927-Jul-22 20:54
Sampath57927-Jul-22 20:54 
AnswerRe: How to read an xlsx file using CDatabase Pin
Victor Nijegorodov27-Jul-22 21:07
Victor Nijegorodov27-Jul-22 21:07 
GeneralRe: How to read an xlsx file using CDatabase Pin
Sampath5791-Aug-22 0:27
Sampath5791-Aug-22 0:27 
GeneralRe: How to read an xlsx file using CDatabase Pin
Richard MacCutchan1-Aug-22 0:38
mveRichard MacCutchan1-Aug-22 0:38 
AnswerMessage Closed Pin
31-Jul-22 18:19
Sampath57931-Jul-22 18:19 
GeneralRe: How to read an xlsx file using CDatabase Pin
Dave Kreskowiak31-Jul-22 18:30
mveDave Kreskowiak31-Jul-22 18:30 
GeneralRe: How to read an xlsx file using CDatabase Pin
Sampath5791-Aug-22 0:40
Sampath5791-Aug-22 0:40 
GeneralRe: How to read an xlsx file using CDatabase Pin
Sampath5792-Aug-22 0:21
Sampath5792-Aug-22 0:21 
QuestionHow to use UTF8 characters in C++ Pin
JohnCodding27-Jul-22 4:00
JohnCodding27-Jul-22 4:00 
AnswerRe: How to use UTF8 characters in C++ Pin
Mircea Neacsu27-Jul-22 4:54
mvaMircea Neacsu27-Jul-22 4:54 
GeneralRe: How to use UTF8 characters in C++ Pin
JohnCodding27-Jul-22 20:40
JohnCodding27-Jul-22 20:40 
AnswerRe: How to use UTF8 characters in C++ Pin
Richard MacCutchan27-Jul-22 5:40
mveRichard MacCutchan27-Jul-22 5:40 
QuestionI Moved this question to the proper forum "Managed C++/CLI" - Sorry for posting in the wrong place :¬) Pin
madusmacus27-Jul-22 3:33
madusmacus27-Jul-22 3:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.