编了一个程序,在一个CPP文建立就可以编译成功,如下:
#include <windows.h>
#include <stdafx.h>
#include <winsock.h>
#include <stdio.h>
#include <tchar.h>
#include <iphlpapi.h>
#include "stdafx.h"
#pragma comment(lib,"ws2_32")
#pragma comment(lib,"iphlpapi")
int f()
{
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen; ipAddr = inet_addr ("10.10.113.1");
memset (pulMac, 0xff, sizeof (pulMac));
ulLen = 6;
hr = SendARP (ipAddr, 0, pulMac, &ulLen);
printf ("Return %08x, length %8d\n", hr, ulLen);
size_t i, j;
char * szMac = new char[ulLen*3];
PBYTE pbHexMac = (PBYTE) pulMac; //
// Convert the binary MAC address into human-readable
//
for (i = 0, j = 0; i < ulLen - 1; ++i) {
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}
sprintf (szMac + j, "%02X", pbHexMac[i]);
printf ("MAC address %s\n", szMac);
delete [] szMac; return 0;
}
void main()
{
f();
}
但是如果把上面的函数声明什么都放到一个头文件里就会提示错误,如下:
#include "tool.h"
void main()
{
f();
}
h:\My Document\Visual Studio Projects\try\try.cpp(6): fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾
请问这是为什么?
#include <windows.h>
#include <stdafx.h>
#include <winsock.h>
#include <stdio.h>
#include <tchar.h>
#include <iphlpapi.h>
#include "stdafx.h"
#pragma comment(lib,"ws2_32")
#pragma comment(lib,"iphlpapi")
int f()
{
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen; ipAddr = inet_addr ("10.10.113.1");
memset (pulMac, 0xff, sizeof (pulMac));
ulLen = 6;
hr = SendARP (ipAddr, 0, pulMac, &ulLen);
printf ("Return %08x, length %8d\n", hr, ulLen);
size_t i, j;
char * szMac = new char[ulLen*3];
PBYTE pbHexMac = (PBYTE) pulMac; //
// Convert the binary MAC address into human-readable
//
for (i = 0, j = 0; i < ulLen - 1; ++i) {
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}
sprintf (szMac + j, "%02X", pbHexMac[i]);
printf ("MAC address %s\n", szMac);
delete [] szMac; return 0;
}
void main()
{
f();
}
但是如果把上面的函数声明什么都放到一个头文件里就会提示错误,如下:
#include "tool.h"
void main()
{
f();
}
h:\My Document\Visual Studio Projects\try\try.cpp(6): fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾
请问这是为什么?
stdafx包含了两次
一个就行了,并且它上面最好不要包含别的投文件,它放到顶行?
另:怎么还包含了windows.h?没时间测试,猜测的。
我把#include <stdafx.h>从tool.h转移到main.cpp第一行就行了,<stdafx.h>究竟是干什么的,怎么这么奇怪?