Click here to Skip to main content
15,898,373 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: .bmp and .ico MFC vc++ Pin
Richard MacCutchan24-Oct-19 4:05
mveRichard MacCutchan24-Oct-19 4:05 
GeneralRe: .bmp and .ico MFC vc++ Pin
Member 1457555625-Oct-19 3:26
Member 1457555625-Oct-19 3:26 
QuestionWhy can't I initialize ("initializer element is not constant") a struct with a truncated function pointer? Pin
arnold_w22-Oct-19 22:33
arnold_w22-Oct-19 22:33 
GeneralRe: Why can't I initialize ("initializer element is not constant") a struct with a truncated function pointer? Pin
Richard MacCutchan22-Oct-19 23:35
mveRichard MacCutchan22-Oct-19 23:35 
GeneralRe: Why can't I initialize ("initializer element is not constant") a struct with a truncated function pointer? Pin
arnold_w23-Oct-19 0:49
arnold_w23-Oct-19 0:49 
GeneralRe: Why can't I initialize ("initializer element is not constant") a struct with a truncated function pointer? Pin
Richard MacCutchan23-Oct-19 1:29
mveRichard MacCutchan23-Oct-19 1:29 
QuestionRe: Why can't I initialize ("initializer element is not constant") a struct with a truncated function pointer? Pin
CPallini23-Oct-19 1:25
mveCPallini23-Oct-19 1:25 
AnswerRe: Why can't I initialize ("initializer element is not constant") a struct with a truncated function pointer? Pin
leon de boer23-Oct-19 2:21
leon de boer23-Oct-19 2:21 
Your statement 3 as written will only compile in C++ it isn't valid C code.
Which is why the person who tried it on VC++ it worked.

In C "myDummyFunc" can not be typecast to an address like in C++, in C "&myDummyFunc" is the pointer address that needs typecasting
Remember what that pesky "&" character means in C

The first case you list was defined as valid in C99, but your 3rd case is junk and correctly rejected
So try proper C code using the "&" so it understands what you are trying to do
myUint16struct_s myStruct3 = { (uint16_t)(uint32_t)&myDummyFunc };

Now if you want to do it properly so its portable the correct way is to use uintptr_t for the translation and C99 dot format
This allows you move the pointer anywhere within the struct and it sets correctly
myUint16struct_s myStruct4 = { .myFunctPtrTruncated = (uint16_t)(uintptr_t)&myDummyFunc };

In C99, uintptr_t will put some safety around your code because it is defined as
an unsigned integer type with the property that any valid pointer to void can be converted to this type, then converted back to pointer to void, and the result will compare equal to the original pointer

In vino veritas


modified 23-Oct-19 8:28am.

GeneralRe: Why can't I initialize ("initializer element is not constant") a struct with a truncated function pointer? Pin
arnold_w23-Oct-19 2:26
arnold_w23-Oct-19 2:26 
GeneralRe: Why can't I initialize ("initializer element is not constant") a struct with a truncated function pointer? Pin
leon de boer23-Oct-19 2:30
leon de boer23-Oct-19 2:30 
QuestionAMD or Intel Pin
_Flaviu22-Oct-19 9:00
_Flaviu22-Oct-19 9:00 
QuestionRe: AMD or Intel Pin
David Crow22-Oct-19 10:00
David Crow22-Oct-19 10:00 
AnswerRe: AMD or Intel Pin
_Flaviu22-Oct-19 19:35
_Flaviu22-Oct-19 19:35 
GeneralRe: AMD or Intel Pin
Richard MacCutchan22-Oct-19 21:42
mveRichard MacCutchan22-Oct-19 21:42 
GeneralRe: AMD or Intel Pin
_Flaviu22-Oct-19 22:53
_Flaviu22-Oct-19 22:53 
GeneralRe: AMD or Intel Pin
Richard MacCutchan22-Oct-19 23:12
mveRichard MacCutchan22-Oct-19 23:12 
GeneralRe: AMD or Intel Pin
_Flaviu23-Oct-19 0:39
_Flaviu23-Oct-19 0:39 
GeneralRe: AMD or Intel Pin
Richard MacCutchan23-Oct-19 0:52
mveRichard MacCutchan23-Oct-19 0:52 
GeneralRe: AMD or Intel Pin
_Flaviu23-Oct-19 1:28
_Flaviu23-Oct-19 1:28 
GeneralRe: AMD or Intel Pin
Richard MacCutchan23-Oct-19 1:31
mveRichard MacCutchan23-Oct-19 1:31 
GeneralRe: AMD or Intel Pin
_Flaviu23-Oct-19 1:51
_Flaviu23-Oct-19 1:51 
GeneralRe: AMD or Intel Pin
Richard MacCutchan23-Oct-19 2:22
mveRichard MacCutchan23-Oct-19 2:22 
GeneralRe: AMD or Intel Pin
_Flaviu23-Oct-19 2:33
_Flaviu23-Oct-19 2:33 
GeneralRe: AMD or Intel Pin
Richard MacCutchan23-Oct-19 4:42
mveRichard MacCutchan23-Oct-19 4:42 
GeneralRe: AMD or Intel Pin
_Flaviu23-Oct-19 6:53
_Flaviu23-Oct-19 6:53 

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.