c语言中的连接是什么意思

发布网友 发布时间:2022-04-23 00:27

我来回答

3个回答

热心网友 时间:2023-09-18 16:39

c语言中的连接指de是将obj文件生成为exe文件。

##可以作为连接字符串的连接符,##为宏扩展提供了一种连接实际变元的。如果替换文本中的参数用##相连,那么参数就被实际变元替换,##与前后的空白符被删除,并对替换后的结果重新扫描。

例如,下面定义的宏paste用于连接两个变元:

#definepaste(front,back)front##back

从而宏调用paste(name,1)的结果是建立单词name1。

扩展资料

C语言连接符的使用:

#include<stdio.h>

#defineOperations(x)operation_##x//##是黏贴字符串

intOperations(sum)(intx,inty){//operation_sum(intx,inty)

returnx+y;

}

intOperations(sub)(intx,inty){//operation_sub(intx,inty)

returnx-y;

}

intOperations(mul)(intx,inty){//operation_mul(intx,inty)

returnx*y;

}

floatOperations(div)(floatx,floaty){//operation_div(intx,inty)

floatresult;

result=x/y;

returnresult;

}

#definePrint(x)printf("%s,%d\n",#x,x);//#表示将参数转变为字符串

intmain()

{

intx;

floaty;

x=Operations(sum)(10,20);

printf("x=%d\n",x);

x=operation_sum(100,20);

printf("x=%d\n",x);

x=Operations(sub)(10,20);//operation_sub(10,20)也可以

printf("x=%d\n",x);

x=Operations(mul)(10,20);//operation_mul(10,20)也可以

printf("x=%d\n",x);

y=Operations(div)(11,20);//operation_div(11,20)也可以

printf("y=%lf\n",y);

Print(100);

return0;

}


热心网友 时间:2023-09-18 16:39

c语言程序编译过程分两步。第一步,形成 obj 文件,第二步,形成 exe 文件。从 obj 到exe 的过程叫链接。

c语言程序,可以由若干个.c文件组成,每个.c,可以独自编译,形成 各自 的 obj 文件。

例如:a1.c a2.c
a1.c 里有 main() 函数
a2.c 里没有 main() 函数,但有别的函数。例如 scanf(),printf(),sqrt(),sin(),cos()....
CL a1.c -c 得a1.obj
CL a2.c -c 得a2.obj
CL a1.obj a2.obj 得 a1.exe
如果 a2.c 不是你自己写的,a2.obj 是编译器带的. a2.obj 就叫库。
CL a1.obj 链接系统库就得 a1.exe

以上是简单说法。实际上的库有的是obj,有的是可执行共享码。初学者可以不必理会它。

热心网友 时间:2023-09-18 16:40

链接属性一共有3种:external(外部)、internal(内部)和none(无)。
1、没有链接属性的标识符(none)总是被当作单独的个体,也就是说该标识符的多个声明被当作不同的实体。
2、属于internal链接属性的标识符在同一个源文件内的所有声明中指同一个实体,但位于不同源文件的多个声明则属于不同的实体。使用static关键字来声明一个internal类型的标识符。static只对缺省链接属性为external的声明才有改变链接属性的效果。static用于声明局部变量时,是使这个变量成为静态变量,就是这个变量在程序的整个运行过程中总是存在的,直到程序结束。
3、属于external链接属性的标识符无论声明多少次、位于几个源文件都表示同一个实体。当extern关键字用于源文件中一个标识符的第1次声明时,它指定该标识符具有external链接属性。但是,如果它用于该标识符的第2次或以后的声明时,它并不会更改由第1次声明所指定的链接属性。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com