今天在vs2010写了点代码,居然报了“PCH 警告:标头停止点不能位于宏或#if块中”。
/*********************
* *
* 文件夹: ▲01 绪论 *
* *
* 文件名: Scanf.c *
* *
*********************/
#ifndef SCANF_C
#define SCANF_C #include <stdio.h>
#include <string.h>
#include <stdarg.h> //提供宏va_list、va_start、va_arg、va_end
#include <ctype.h> //提供isprint原型
..... #endif
原因:vs2010的智能感知要求.h必须以非#if系列的预编译指令打头
修改办法 两种,在代码顶部加上下面一句代码就ok了
#pragma once
修改后的代码
/*********************
* *
* 文件夹: ▲01 绪论 *
* *
* 文件名: Scanf.c *
* *
*********************/
#pragma once
#ifndef SCANF_C
#define SCANF_C #include <stdio.h>
#include <string.h>
#include <stdarg.h> //提供宏va_list、va_start、va_arg、va_end
#include <ctype.h> //提供isprint原型 int Scanf(FILE *fp, char *format, ...)
{
int *i;
char *ch, *s;
float *f;
int count, k, len, n;
int tmp;
va_list ap;
...... #endif
或
将所有含有#include <***.h> 的头文件放在#ifndef等外,即上方。
//#pragma once
#include <stdio.h>
#include <string.h>
#include <stdarg.h> //提供宏va_list、va_start、va_arg、va_end
#include <ctype.h> //提供isprint原型
#ifndef SCANF_C
#define SCANF_C