这是很正常的啦。keil能够识别你的芯片,能够找到你的main函数是因为有启动文件。而启动文件是跟着编译器走的。51单片机就是startup那个汇编文件。iar我没用过,不过肯定也有这类似的文件。arm我手上的启动文件叫startup_stm32f429_439xx.s。。你看arm对于不同型号启动文件都是不一样的。
启动文件包含了堆栈地址,堆栈大小,中断向量表,复位函数,寻找main函数句柄,默认系统函数弱定义(弱定义就是你不定义它用他自己的,你有定义他就用你的,不算重复定义)等等。
不同的编译器对于数据类型可能都有不一样,所以程序移植可不是复制黏贴那么简单的事哦~
注意下头文件的包含或定义