相关疑难解决方法(0)

如何使用extern在源文件之间共享变量?

我知道C中的全局变量有时会有extern关键字.什么是extern变量?宣言是什么样的?它的范围是什么?

这与跨源文件共享变量有关,但这是如何工作的?我在哪里用extern

c global-variables extern

942
推荐指数
13
解决办法
67万
查看次数

为什么使用 EXTERNDEF MyByteArray:BYTE 时 MASM 关键字 SIZEOF MyByteArray 始终返回 1

使用这个单一 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)

x86 assembly masm

5
推荐指数
1
解决办法
101
查看次数

如何确定源文件的编译顺序?

我有一个包含许多*.c文件的工作区,我编译.(我可以使用任何工具链说MSVC6.0,或gcc等)

首先编译哪个源文件?

随后编译的文件顺序如何确定?

c nmake makefile compilation

2
推荐指数
3
解决办法
4409
查看次数

标签 统计

c ×2

assembly ×1

compilation ×1

extern ×1

global-variables ×1

makefile ×1

masm ×1

nmake ×1

x86 ×1