【发布时间】:2017-01-03 00:33:38
【问题描述】:
我从this 问题中借用了示例。有以下文件:
main.cpp
#include <iostream>
#include "foop.h"
int main(int argc, char *argv[])
{
int x=42;
std::cout << x <<std::endl;
std::cout << foo(x) << std::endl;
return 0;
}
foop.h
#ifndef FOOP_H
#define FOOP_H
int foo(int a);
#endif
foop.cpp
int foo(int a){
return ++a;
}
如您所见,main.cpp 包含foop.h,但foop.h 仅包含声明而不包含函数foo 的定义。 main.cpp 如何知道foop.cpp 的存在以及foo 函数的定义?我的第一个猜测是,如果 *.h 的名称与 *.cpp 的名称相同,那么它会以某种方式神奇地起作用,但是当我将 foop.cpp 重命名为 foop2.cpp 时它也起作用了
PS:我将文件保存在一个项目下,在 Visual Studio 的同一目录中
PPS:我能否以某种方式调试编译过程,以便查看发生了什么?
【问题讨论】:
-
每个问题一个问题,这样可以更容易地写出简洁的答案或找到合适的欺骗(如果适用)。
-
I keep files under one project,- 这是重要的部分。 MSVC++ 项目只是一组文件(一旦编译)应该链接在一起。对于不同项目中的文件,您需要将一个项目设为库项目并告诉另一个项目使用第一个项目。 -
@MSalters 谢谢,这应该是一个答案。
标签: c++ visual-studio compilation include c-preprocessor