C/C++源文件只能够用C/C++的编译器来编译。
以GCC编译器为例,整个编译可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。
不必转换,我早已熟透组合排列算法:java如下import java.util.Arrays
import java.util.LinkedList
public class Guy
{
public static void recursionSub ( LinkedList<int[]> list, int count, int[] array, int ind, int start, int... indexs )
{
start++
if (start > count - 1)
{
return
}
if (start == 0)
{
indexs = new int[array.length]
}
for ( indexs[start] = ind indexs[start] < array.length indexs[start]++ )
{
recursionSub (list, count, array, indexs[start] + 1, start, indexs)
if (start == count - 1)
{
int[] temp = new int[count]
for ( int i = count - 1 i >= 0 i-- )
{
temp[start - i] = array[indexs[start - i]]
}
list.add (temp)
}
}
}
public static void main ( String[] args )
{
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
LinkedList<int[]> list = new LinkedList<int[]> ()
recursionSub (list, 3, array, 0, -1)
for ( int[] strings : list )
{
System.out.println (Arrays.toString (strings))
}
}
}