C语言中,花括号{}有哪些作用?

2024-12-18 01:36:07
推荐回答(3个)
回答1:

这可能是用者在SDK下开发的,用于在sdk下面嵌入一个web浏览器

如果你了解一些COM知识,就想到你需要什么来使浏览器COM对象运行

你要提供四个对象给浏览器对象:IStorage, IOleInPlaceFrame, IOleClientSite, 和IOleInPlaceSite。这是四个结构,每个都有自己的VTable,这些结构和他们的VTable都在头文件中用C定义好了。他们每个都有自己的一系列成员函数。

IStorage对象,它定义了称为IStorageVtbl的Vtable结构。在这个VTable中一共有18个函数指针(也就是说IStorage本身就有18个特定的函数,这也是为什么大家更多的使用MFC,.NET,WTL以便来使工作更简单轻松)。当然前三个函数也必须为QueryInterface(), AddRef(),和Release()。在CWebPage.c中我把这三个函数命名为Storage_QueryInterface(), Storage_AddRef(),和Storage_Release(),后面的15个方程我都是用Storage_来开头的,它们是Storage_OpenStream(), Storage_CopyTo()等等,IStorage的函数的作用是管理程序和磁盘的读写的,具体的作用和参数可以参考MSDN关于IStorage的文档。

也就是说在MSDN里面有关于对他们的注释,你没仔细看,我也懒的找!

创建IStorage的最简单的办法是把它声明为全局变量,并且用18个函数指针来初始化它,代码就是你那里面的第一个花括号,现在知道什么意思了没,就是定义指针!

现在就有了一个全局的初始化好了的IStorage的VTable----MyIStorageTable

下一步就是创建IStorage对象。最简单的还是把它声明为全局的变量并且初始化它,它只有一个VTable:

IStorage MyIStorage = { &MyIStorageTable };

现在就有了IStorage的被初始化好了的全局对象MyIStorage。现在操作系统的函数随时可以调用这个对象并把它交给浏览器对象这样它就可以调用上面的18个函数了。

如果看不懂,就好好找找MSDN的注释

TO 楼主:
IStorage不是一个实际意义上的函数或者结构,虽然他被称之为结构,但是我的理解不是,它必须要有一定的 条件才能被称为结构,就是必须定义了一个有实际意义的指针或者用途,而IStorageVtbl正是用它包含的 函数定义完了的实际意义,MSDN上没注释,是因为它只有被定义过才会有实际用途,我也查过一遍,的确是没怎么介绍,我初步估计可能是用者自己的定义,只有定义成功以后才会有初始化完的VTable,这样才能继续创建对象,否则不是成了空锅里放了米想煮饭,岂不明白有米有锅也未必能煮成饭,必须要有一定的条件啊

回答2:

作用就是一定要先做花括号里面的语句,不能分开

回答3:

我觉得它是不是和对象的初始化有关 我也不太清楚

不过{}也可以定义块语句