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;//正确定义一个浮点型常量
常量与变量的差别是:常量一经定义后,就不能再修改!如果在使用中修改PI,则编译或运行时会出错,如VC6报错:error C2166: l-value specifies const object
常量与宏定义常量的区别是:宏定义会在预处理阶段将用define定义的内容对代码中相应的标识符进行替换(编译期替换,编译后宏消失)。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。const定义的常量,在程序运行时在常量表中,系统为它分配内存。
4. c语言中的编辑,编译,连接,运行分别是什么意思
在C语言编程中,编辑是首要步骤,涉及使用文本编辑器或集成开发环境(IDE)创建源代码文件。这个阶段,开发者通过编写逻辑和算法,定义变量和函数,形成一个完整的程序。
接下来是编译阶段,这是将C语言源代码转换为机器可读形式的过程。编译器会检查语法错误和逻辑错误,并生成目标文件。如果编译过程中发现错误,编译过程将停止,无法生成目标文件。
链接是编译后的目标文件与库文件组合的过程,生成最终可执行文件。链接器会解决目标文件之间的引用问题,确保程序能够正确执行。如果链接过程中遇到错误,例如未定义的符号或库文件缺失,链接过程将失败,导致无法生成可执行文件。
最后一步是执行,即运行编译和链接生成的可执行文件。这一步是整个编程过程的最终目标,通过执行程序,验证其功能是否符合预期。
在C语言编程流程中,每个步骤都至关重要。正确的编辑确保代码的质量,准确的编译保证代码的正确性,成功的链接生成可执行文件,最终执行验证程序的功能。