有没有人知道IDC编辑窗口时使用的首字母缩略词的含义?
例如,在CDialog应用程序的上下文中:
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STATIC_FRAME, m_StaticFrame);
}
Run Code Online (Sandbox Code Playgroud)
它通常是未进一步指定的控件(ID控件)的ID,因为Dialog会有前缀IDD(ID Dialog)吗?
我如何指示gcc警告我有关无效的函数指针转换,比如g ++会对下面的代码做什么?
并且..为什么gcc没有警告我这个?将指针传递给do_something()时会发生什么/将会发生什么?
#include <stdio.h>
typedef void (*void_func_t) ();
typedef void (*void_int_func_t) (int, int, int);
void do_something(void_func_t f)
{
void_int_func_t foo = f;
foo(1,2,3);
}
void a()
{
printf("a\n");
}
void b(int one, int two, int three)
{
printf("%i, %i, %i\n", one, two, three);
}
int main()
{
do_something(a);
do_something(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
? gcc -W -Wall -Werror func.c
? ./a.out
a
1, 2, 3
Run Code Online (Sandbox Code Playgroud)
然而,c ++会警告/给出错误
g++ -W -Wall -Werror func.c
func.c: In function ‘void do_something(void_func_t)’:
func.c:8:27: error: …Run Code Online (Sandbox Code Playgroud)