我有以下代码,但有编译错误,但我不明白自己定义欠佳的地方:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <tchar.h>
#include <w3file.h>

#define BUF_SIZE 32

FILE * MMFdata;
HANDLE hMapFile;
MMFdata = fopen(OsFileName, "w+");

int _tmain(int argc, _TCHAR* argv[])
{
FILE * MMFdata;
HANDLE hMapFile;

MMFdata = fopen(OsFileName, "w+");
fclose(MMFdata);

hMapFile = CreateFileMapping(
                 INVALID_HANDLE_VALUE,    // use paging file
                 NULL,                    // default security
                 PAGE_READWRITE,          // read/write access
                 0,                       // maximum object size (high-order DWORD)
                 BUF_SIZE,                // maximum object size (low-order DWORD)
                 (LPCTSTR)OsFileName);    // name of mapping object

   if (hMapFile == NULL)
   {
      _tprintf(TEXT("Could not create file mapping object (%d).n"),
             GetLastError());
      return 1;
   }
}


错误原因:

IntelliSense:此声明没有存储类或类型说明符
IntelliSense:标识符“ OsFileName”未定义
我在这里想念什么?

最佳答案

在您的程序中:

MMFdata = fopen(OsFileName, "w+");


是函数外部的语句。

您不能具有具有文件范围的语句,该语句必须在函数体内。

此外,您的程序中未定义OsFileName标识符。

关于c - 如何在C中使用MMFdata?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8872971/

10-09 08:46