Ewa*_*wan 3 c compiler-errors header-files visual-studio
我对C比较陌生(因为我不想使用C++,或者至少还没有),我不知道如何修复我的包含错误.
我有一个包含常量值1000的头文件,称为Test.
const int Test = 1000;
Run Code Online (Sandbox Code Playgroud)
我有这个文件包含在2个文件中 - Myfile.c和Myfile2.c,每个文件都包含这样的文件:
#include "MyHeader.h"
Run Code Online (Sandbox Code Playgroud)
我的项目不会构建/编译,因为我发现它包括两次不允许的标题,因为我声明我的变量"Test"两次.经过研究,我在维基百科上找到了这个:http://bit.ly/10wPraP
我用这个"Include Guard"
例:
#ifndef MY_HEADER
#define MY_HEADER
const int Test = 1000;
#endif
Run Code Online (Sandbox Code Playgroud)
我也曾尝试过预处理器(?)命令pragma.
#pragma once
Run Code Online (Sandbox Code Playgroud)
但是,我的程序仍然无法构建.我现在得到错误,说已经在MyFile.obj中定义了变量"Test".
我认为这可能是一个Visual Studio-ism,因为我正在使用它,但我的2010 Express C++和VS2003 Professional都不会构建它.我试过在Visual Studio中清理项目,我不知道还能做什么.
我是非常愚蠢而且在这里遗漏了一些明显的东西,这就是为什么它不起作用?
我习惯于C#和"使用"命名空间而不是包含.可能我在VS上设置只编译C代码会影响这个吗?
包括警卫与它无关.您需要将声明与定义分开,并且只有一个定义(这称为"一个定义规则",ODR):
header.h:
extern const int n;
Run Code Online (Sandbox Code Playgroud)
一个源文件:
#include "header.h"
const int n = 1000;
Run Code Online (Sandbox Code Playgroud)
所有其他源文件:
#include "header.h"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5250 次 |
| 最近记录: |