我已经用汇编语言声明了一个函数tolower,我从包含标准库的C代码中调用它。我想知道为什么这会正常工作而不会出现任何错误,因为现在存在两个具有相同名称的函数。
我的C代码:
#include <stdio.h>
#include <string.h>
int main() {
char in0[] = "something";
char in1[] = "SomethinG";
char in2[] = "S0mething";
int i = 0;
while (in0[i]) {
in0[i] = tolower(in0[i]);
in1[i] = tolower(in1[i]);
in2[i] = tolower(in2[i]);
i++;
}
return 0;
}
我无法将汇编代码放在一项任务中。我已全球宣布了tolower功能。
.section .data
.section .text
.globl _start
.globl tolower
.type tolower, @function
tolower:
我使用gcc cfile.c assfile.s
编译答案 0 :(得分:0)
您确定要从C代码调用汇编程序版本,而不是标准库版本吗?如何定义汇编代码?它是C项目中的模块(.asm),内联,静态.DLL库还是.DEF / OBJ导入?你在使用什么编译器,汇编器(和IDE,OS?)?目前没有足够的信息可以得出具体的答案,但如果没有什么&#34;定义&#34; C语言的汇编程序函数,以C可以理解的方式,然后它将忽略任何命名冲突。这在技术上也不是错误;相同的功能名称就像在加拿大和欧洲有两个相同的房屋地址(123_Anystreet)。完全可能和允许,但C通常不允许(和汇编程序一样)。