struct student{ #include "test"};
测试是一个纯ASCII文本文件,包含以下信息
UU2(testing,value,21);
我不确定它是什么意思,通过在结构中包含文本文件我们将获得什么好处.
有人可以帮帮我吗?
解决方法 在没有UU2的上下文或定义的情况下,不可能肯定地说这里发生了什么,但这看起来很像普通的C模式,称为 X macros.通常在包含的文件中会有更多的行.X宏用于反转运算符和 *** 作数之间的关系(即宏和数据之间).使用普通宏,关系是一个定义 – >在整个代码中,多个输入,即#define M()…后面跟着M(foo),M(bar)等;一个M *** 作重复应用于多个不同的输入.
相反,X宏具有多个定义的关系 – >一个输入.输入表示为宏调用块,然后周围的代码用于为宏设置合适的定义,以便这些应用程序扩展为有用的东西.这具有以下优点:可以将相同的调用块重复粘贴到程序内的不同上下文中,其中已经建立了对其控制宏的不同定义,以创建相同基本输入数据的不同扩展.例如相同的输入块(在“block.x”中):
M(one,7);M(two,8);M(three,9);
…可以解释为结构元素的结构声明,结构初始化或展开循环,具体取决于它所放置的上下文以及此时M的可见定义:
// context 1: declare a struct#define M(N,V) int N;struct foo { #include "block.x"};// context 2: initialize a struct#define M(N,V) .N = V,struct foo f = { #include "block.x"};// context 3: do something to a struct#define M(N,V) if(THIS.N==8)puts("eight!");else puts("not eight");#include "block.x" // prints "not eight","eight!","not eight"
将宏语句块放在其自己的文件中允许将其轻松地#included到多个不同的扩展上下文中,从而允许单个结构化数据定义具有多个应用程序.将公共结构集中在一个文件中有助于维护,通过立即传播数据结构中的任何更改,直到它在程序中的任何位置进行解释.
(#include不是唯一的方法,但它是常见的模式)
为什么在这里使用这个模式,似乎只有一行和UU2只有一个定义?好吧,同样的原则仍然适用 – 即使程序当前没有在多个位置应用结构化数据,它仍然意味着无论什么过程/人生成它都不需要知道C程序如何解释他们提供的纯粹抽象结构.他们只关注布局,不需要知道它是一个类型定义的一部分,以及如何将其编辑成源文件(或者C有类型定义之类的东西,甚至程序是用C语言编写的) ).它们提供抽象的结构和价值,C程序将对数据施加自己的意义.
总结以上是内存溢出为你收集整理的包括c中结构中的文本文件全部内容,希望文章能够帮你解决包括c中结构中的文本文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)