📄 cmain.c
字号:
/*------------------------------------------------------------------------
C main that calls asm dll
Passes: char, short, int, long using stdcall calling and naming convention.
Returns: number of failures.
--------------------------------------------------------------------------*/
#include <stdio.h>
#include <windows.h>
BOOL __stdcall VSIntTest( char int1, int int2, short int3, long int4 );
BOOL __stdcall RSIntTest( char *int1, int *int2, short *int3, long *int4 );
const bNegMax = -128;
const iNegOne = -1;
const suMax = 32767;
const lNegMax = -2147483647 - 1;
int main( void )
{
char bVal1 = bNegMax;
int iVal2 = iNegOne;
short iVal3 = suMax;
long lVal4 = lNegMax;
int cErrors = 0; // count of errors/failed tests
/* Call a function in the DLL passing various params by value.
Since the params were passed by value, the original value passed
shouldn't have changed, generate an error if they were. */
if (!VSIntTest(bVal1, iVal2, iVal3, lVal4)) {
printf("Failed: Passing signed integers by value, stdcall, to MASM DLL.\n");
cErrors++;
}
else {
if (!( (bVal1 == bNegMax) && (iVal2 == iNegOne) && (iVal3 == suMax) && (lVal4 == lNegMax) )) {
printf("Stack corruption: signed integers by value, stdcall, to MASM DLL.\n");
cErrors++;
}
else {
printf("Passed: Passing signed integers by value, stdcall, to MASM DLL.\n");
}
}
/* Call another function in the DLL passing various params by reference.
Since the params were passed by reference, generate an error if they
were not changed to the desired values within the DLL. */
if (!RSIntTest(&bVal1, &iVal2, &iVal3, &lVal4)) {
printf("Failed: Passing signed integers by reference, stdcall, to MASM DLL.\n");
cErrors++;
}
else {
if (!( (bVal1 == 1) && (iVal2 == 1) && (iVal3 == 1) && (lVal4 == 1) )) {
printf("Stack corruption: signed integers by reference, stdcall, to MASM DLL.\n");
cErrors++;
}
else
printf("Passed: Passing signed integers by reference, stdcall, to MASM DLL.\n");
}
return cErrors; // return a count of errors.
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -