包括c中结构中的文本文件
存在包括文本文件的结构.
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程序将对数据施加自己的意义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |