Programming languages 不同编程语言的可能性

Programming languages 不同编程语言的可能性,programming-languages,Programming Languages,这应该是一个非常简单的问题。有许多编程语言,编译成机器代码或托管代码。我在高中时就开始学习ASM。汇编程序非常好,因为你们知道CPU到底做什么。接下来,(从你的其他问题可以看出)我决定学习C和C++。我之所以选择C,是因为我读到的是输出最接近汇编程序的语言 但是,我想知道的是,其他的Windows编程语言可以调用win32 API吗?确切地说,就像C有其特殊的头和win32 api交互函数一样,这是编程语言的重要组成部分吗?或者有没有任何语言不支持调用win32 API,或者只使用console

这应该是一个非常简单的问题。有许多编程语言,编译成机器代码或托管代码。我在高中时就开始学习ASM。汇编程序非常好,因为你们知道CPU到底做什么。接下来,(从你的其他问题可以看出)我决定学习C和C++。我之所以选择C,是因为我读到的是输出最接近汇编程序的语言


但是,我想知道的是,其他的Windows编程语言可以调用win32 API吗?确切地说,就像C有其特殊的头和win32 api交互函数一样,这是编程语言的重要组成部分吗?或者有没有任何语言不支持调用win32 API,或者只使用console进行IO和一些函数进行基本文件IO?因为,对于带有图形输出的Windows编程,访问win32 API是必不可少的。我知道这个问题可能看起来很傻,但还是请帮帮我,我要求学习。谢谢

许多不同的语言都有打开和使用windows DLL文件的方法,因此您可以打开包含API函数的系统DLL并使用它们

有些语言(如C)通过提供一个包含所有已定义内容的漂亮头文件来帮助您


我所见过的唯一一种可以直接访问WinAPI而不需要事先打开任何库的语言是一种基本方言,名为。我用来访问Windows API的第一种语言是VB4。是的,大多数语言都可以通过某种方式访问API。

您是在问如何从程序集调用Win32吗

只需使用MASM(或TASM,或…)

调用Win32的hello world示例:

==== HelloWin.asm ==============================
.586
.model flat, stdcall

EXTERN MessageBoxA@16:NEAR

.data
szCaption db 'Hello World',0
szAppName db 'HelloWorld',0

.code
start:
push 0
push offset szCaption
push offset szAppName 
push 0
call MessageBoxA@16
ret

end start
===================================================
组装:

ml.exe/coff/c HelloWin.asm

链接:


链接/子系统:Windows Hythin.Obj/Debug TLB:C:\MasM32 \LIB \USE32. LIB

< Pin> Win32功能,可从C、C++、VB、VB、NET和C语言中获得。在后两个示例中,您通常使用漂亮的CLR库,但是如果您知道正确的语法,您可以直接调用本机(非托管)API


Win32的使用不限于上述列表。这是一个C API,其原因是:任何本质上知道如何进行正确类型的函数调用的语言都可以调用它们。在这种情况下,“正确的类型”是。该语言的编译器(或其他任何东西)所要做的就是加载正确的DLL,以正确的顺序将参数(和其他信息)推到堆栈上,然后就可以开始了。

windows.h只是让您的程序知道
C:\windows
中DLL中的内容。当您导入windows.h时,您就可以使用API函数,而无需再进行任何操作。使用其他语言时,您可能必须手动打开DLL文件,才能调用其中包含的函数。printf()是所有C编译器附带的标准库的一部分。标准库是一个较小的库,它包含所有需要跨平台的基本内容。WinAPI不是跨平台的。好的,谢谢。我能再问一个小问题吗?如果standart库是跨平台的,则Windows或Linux编译器中的printf()等函数必须相同。因此,Windows和Linux都必须支持它。我所说的支持是指将控制台连接到处理并与之进行相同的通信。但我认为控制台应用程序和GUI win32项目之间的唯一区别是控制台应用程序在启动时自动分配控制台。所以我认为,甚至像printf()这样的函数都是特定于平台的。因为,例如Dos使用int 21h作为输出,我认为Linux使用int 80h。是的,Windows控制台应用程序确实使用WinAPI分配一个在启动时立即打开的控制台(如果不是从另一个控制台调用的话)。然而,在linux上,它不是,您必须从终端窗口(为该平台编译后)调用该程序。另外,对于输入/输出内容,不要担心硬件,考虑使用stdin/stdout/stderr等流进行通信。这将从硬件细节中抽象出来,并允许跨平台编程。谢谢。但是,我想更深入地研究计算机。A我想我知道硬件是如何工作的,因为我们在学校有CPU架构(从8086到奔腾1,8051比x86先),大约10个月,每周7小时。因此,现在我只是收集有关操作系统如何实际使用此硬件的可能性的信息。我主要使用谷歌,但有时我找不到我需要知道的东西。。