我遇到了VC的一件怪事!
请先看我的程序源文件:
四个文件分别是:
file1.c
程序代码:#include <stdio.h>
//#include <math.h>
//#include "head.h"
/*void enter_string(char str[]);
void delete_string(char str[],char ch);
void print_string(char str[]);*/
void main()
{
/*extern void enter_string(char str[]);
extern void delete_string(char str[],char ch);
extern void print_string(char str[]);*/
char c;
char str[80];
enter_string(str);
scanf("%c",&c);
delete_string(str,c);
print_string(str);
printf("结果是:%d\n",abs(-10));
}
file2.c
程序代码:#include<stdio.h>
void enter_string(char str[80]) //定义外部函数enter-string
{
gets(str); //读入字符串str
}
file3.c
程序代码:#include<stdio.h>
void delete_string(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
} file4.c
程序代码:#include<stdio.h>
void print_string(char str[])
{
printf("%s\n",str);
}主函数文件是file1.c,大家应该注意了我把自定义函数的声明全部注释掉了,包括包含math.h文件的声明!我点构建后,程序照样运行,切编译成功!以下是编译后的提示:
程序代码:Deleting intermediate files and output files for project 'Trial - Win32 Debug'. --------------------Configuration: Trial - Win32 Debug-------------------- Compiling... file1.c d:\学习用\c++\编程思想第一版\trial\file1.c(17) : warning C4013: 'enter_string' undefined; assuming extern returning int d:\学习用\c++\编程思想第一版\trial\file1.c(19) : warning C4013: 'delete_string' undefined; assuming extern returning int d:\学习用\c++\编程思想第一版\trial\file1.c(20) : warning C4013: 'print_string' undefined; assuming extern returning int d:\学习用\c++\编程思想第一版\trial\file1.c(21) : warning C4013: 'abs' undefined; assuming extern returning int file2.c file3.c file4.c Linking... Trial.exe - 0 error(s), 0 warning(s)从语法上来讲这根本是不可能编译成功的,但在我的VC上不但编译成功而且运行也成功了:
求各位大侠给个解释啊,难道不声明也可以直接调用其他文件定义的函数(尤其是不声明#include <math.h>也可用其库内部的函数)。








.............
