导航:首页 > 源码编译 > 宏在编译连接和运行时没有符号

宏在编译连接和运行时没有符号

发布时间:2025-01-04 17:55:08

1. C++/C宏定义中## 连接符与# 符的含义拜托各位大神

## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#符是把传递过来的参数当成字符串进行替代。下面来看看它们是怎样工作的。这是MSDN上的一个例子。 假设程序中已经定义了这样一个带参数的宏: #define paster( n ) printf( "token" #n " = %d", token##n ) 同时又定义了一个整形变量: int token9 = 9; 现在在主程序中以下面的方式调用这个宏: paster( 9 ); 那么在编译时,上面的这句话被扩展为: printf( "token" "9" " = %d", token9 ); 注意到在这个例子中,paster(9);中的这个”9”被原封不动的当成了一个字符串,与”token”连接在了一起,从而成为了token9。而#n也被”9”所替代。 可想而知,上面程序运行的结果就是在屏幕上打印出token9=9 (查找到的)

记得采纳啊

2. java文件在编译时出现找不到符号的问题,哪位大神帮我一下

以下是可运行代码:
错误1. 没有导包 就是import 语句. 因为你引用了 Arrays,Set等一些类,所以需要导入。
2. split 写错了。 你写错spilt 了。

有问题留言。
*/

import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class Set1{
static void fill(Set s){
s.addAll(Arrays.asList("one two three four five six seven".split(" ")));
}
public static void test(Set s){
System.out.println(s.getClass().getName().replaceAll("\\w+\\."," "));
fill(s); fill(s); fill(s);
System.out.println(s);
s.addAll(s);
s.add("one");
s.add("one");
s.add("one");
System.out.println(s);
System.out.println("s.contains(\"one\"):"+s.contains("one"));
}
public static void main(String[] args){
test(new HashSet());
test(new TreeSet());
test(new LinkedHashSet());
}
}

3. C++中,宏定义与一般的定义有什么区别

C/C++中的宏定义是进行符号常量定义,该定义用于定义一种符号信息用来表示一些特殊的信息,使源代码更具有可读性,同时,也可以提高系统的可移植性。宏定义是在编译时进行解释与替换的,实际运行中的代码是没有宏定义符号的。而一般变量或常量的定义在系统运行中,是有自己的内存空间,访问权限,和生存周期的。

宏定义常量

#definePI3.141
注意:1、符号常量与数值间没有等号2、该语句不需要以分号结尾
如:
#definePI=3.141语法上无大问题,但应用中可能会出错,编译时,所有的PI会替换成‘=3.141'
#definePI3.141;语法上无大问题,但应用中可能会出错,编译时,所有的PI会替换成‘3.141;’

变量定义

doublePI=3.141;//定义一个变量PI,在内存中会给变量PI分配一个空间,其空间中存储了3.141,在使用中,可以随时改变PI值,如:PI=3.1415926;

常量定义

constPI=3.141;//因为没有写类型,默认为int类型,所以,这里的PI值实际为3
constdoublePI=3.141;//正确定义一个浮点型常量
  1. 常量与变量的差别是:常量一经定义后,就不能再修改!如果在使用中修改PI,则编译或运行时会出错,如VC6报错:error C2166: l-value specifies const object

  2. 常量与宏定义常量的区别是:宏定义会在预处理阶段将用define定义的内容对代码中相应的标识符进行替换(编译期替换,编译后宏消失)。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。const定义的常量,在程序运行时在常量表中,系统为它分配内存。

4. c语言中的编辑,编译,连接,运行分别是什么意思

在C语言编程中,编辑是首要步骤,涉及使用文本编辑器或集成开发环境(IDE)创建源代码文件。这个阶段,开发者通过编写逻辑和算法,定义变量和函数,形成一个完整的程序。

接下来是编译阶段,这是将C语言源代码转换为机器可读形式的过程。编译器会检查语法错误和逻辑错误,并生成目标文件。如果编译过程中发现错误,编译过程将停止,无法生成目标文件。

链接是编译后的目标文件与库文件组合的过程,生成最终可执行文件。链接器会解决目标文件之间的引用问题,确保程序能够正确执行。如果链接过程中遇到错误,例如未定义的符号或库文件缺失,链接过程将失败,导致无法生成可执行文件。

最后一步是执行,即运行编译和链接生成的可执行文件。这一步是整个编程过程的最终目标,通过执行程序,验证其功能是否符合预期。

在C语言编程流程中,每个步骤都至关重要。正确的编辑确保代码的质量,准确的编译保证代码的正确性,成功的链接生成可执行文件,最终执行验证程序的功能。

阅读全文

与宏在编译连接和运行时没有符号相关的资料

热点内容
apppt是什么意思 浏览:993
云服务器搭建kali 浏览:180
数控编程基础教程免费 浏览:752
现代编译器价格 浏览:837
哼哼贷是什么app 浏览:826
压缩档案管理 浏览:358
加密货币词典 浏览:308
单片机12t和1t的区别 浏览:213
程序员如何做梦 浏览:703
麻雀第30集解压密码 浏览:453
法语教育哪个app好 浏览:708
加密文件怎么炸开 浏览:113
的加密技术有 浏览:420
副图指标源码怎么设置 浏览:727
程序员劳动合同范本 浏览:588
单片机生产公司 浏览:528
查看工作区文件内容变化的命令 浏览:726
war压缩软件下载 浏览:373
哪个视频app小品多 浏览:887
健身房收银app哪个好用 浏览:956