gpt4 book ai didi

c++ - #ifndef 如何处理全局声明的变量和我自己的变量?

转载 作者:行者123 更新时间:2023-11-28 02:52:29 26 4
gpt4 key购买 nike

<分区>

有个问题让我百思不得其解。我知道这样做是不对的,但我不知道为什么。 #ifndef#define #endif 是如何工作的。编译器如何处理像下面的“a”和“b”这样的变量;

代码很简单:(myh.h):

#ifndef P_H
#define P_H
struct P{
int a;
};
int b;
#endif

另一个文件s.cpp

#include"myh.h"
P a1;

main.cpp:

#include<iostream>
#include"myh.h"
using namespace std;

int main()
{
P a2;
return 0;

}

错误是b的多重定义;正如我所知。我有两个问题:1.正如有些书所说,如果您使用#ifndef,编译器将不会包含它两次,那么为什么“b”似乎包含两次。

  1. “a”、“b”和“P”的区别是什么?为什么“a”和“P”毫无疑问。我不知道将“P”视为与“b”同级别的变量是否正确?或者“P”只是类型的定义。

如果是局部和全局的区别,为什么“P”是对的?

我真的很疑惑。请原谅你的时间来帮助我。谢谢。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com