我知道C中的全局变量有时会有extern关键字.什么是extern变量?宣言是什么样的?它的范围是什么?
这与跨源文件共享变量有关,但这是如何工作的?我在哪里用extern?
使用这个单一 externdef 关键字创建了一个包含文件
编号.inc
EXTERNDEF MyByteArray:BYTE
Run Code Online (Sandbox Code Playgroud)
创建了一个定义 10 字节数组并包含 num.inc 的汇编文件
数字asm
option casemap:none
include num.inc
.data?
MyByteArray BYTE 10 DUP (?)
end
Run Code Online (Sandbox Code Playgroud)
创建了一个打印 MyByteArray 大小的汇编文件
ABS.ASM
option casemap:none
include num.inc
extrn printf:proc
.data
szArray db 'MyByteArray = %d',0ah,0
.code
main proc
mov rax, SIZEOF MyByteArray
mov rdx,rax
mov rcx,offset szArray
sub rsp,20h
call printf
add rsp,20h
ret
main endp
end
Run Code Online (Sandbox Code Playgroud)
上面的文件使用下面的这些命令进行组装和链接
绝对值蝙蝠
@echo on
if not defined DevEnvDir (
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat"
)
ml64.exe abs.asm num.asm …Run Code Online (Sandbox Code Playgroud) 我有一个包含许多*.c文件的工作区,我编译.(我可以使用任何工具链说MSVC6.0,或gcc等)
首先编译哪个源文件?
随后编译的文件顺序如何确定?