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

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

发布时间: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语言编程流程中,每个步骤都至关重要。正确的编辑确保代码的质量,准确的编译保证代码的正确性,成功的链接生成可执行文件,最终执行验证程序的功能。

阅读全文

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

热点内容
matlab遗传算法适应度函数 浏览:129
制作linux系统镜像 浏览:154
域名解析服务器ip地址不能正常 浏览:845
程序员十万个为什么 浏览:535
维信卡卡贷app怎么下载不了 浏览:919
qdim命令使用 浏览:873
截图R命令 浏览:654
基于单片机的智能台灯设计 浏览:685
多余app是怎么兑换皮肤的 浏览:552
sql数据库查询表命令 浏览:551
简单音乐网站源码 浏览:644
运动健康app华为手表怎么连接 浏览:748
肌肉塑造全书pdf下载 浏览:796
安卓简约拼图用什么软件好 浏览:289
fx1n加密程序 浏览:844
淘客阿里云服务器 浏览:476
100压缩打造 浏览:422
安卓手机怎么和苹果平板传文件 浏览:973
开始选项卡中的页眉和页脚命令选项 浏览:424
pdf的字体怎么改 浏览:856