初学者几问

yushi515 2003-09-13 01:58:37
1,static能否和extern一起使用?我在头文件中定义static extern类型的东西,编译出错。

2,新定义了一个类型:
struct NoAndDis
{
int No;
int Dis;
};
然后定义了一个数组:
NoAndDis NoOps[6];
但是在这样使用数组的时候:NoOps[0]. VC++编译器不出现成员变量提示框,而NoOps.的时候出现成员变量提示框,请问这是为什么??

3,在头文件中定义了一个函数,但是对这个头文件进行两次#include的时候出现编译错误,这里头文件已经使用了#ifndef的宏避免重复定义,那为什么还出现错误??

4,//{{AFX_DATA(CPage1)
//{{AFX_DATA
在msdn中没有查到相关的文档,这些是什么意思??没有他们不也正常编译吗??

5,为什么dll中的cpp文件要包含StdAfx.h?这种情况的dll是不是用MFC框架的啊?好像sdk的dll不需要这样。

6,是不是用SDK编的dll比用AppWizard生成的dll小啊?
...全文
36 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinzhaohui 2003-09-13
  • 打赏
  • 举报
回复
1.extern 本来就有静态的意思
2.使用 struct NoAndDis NoOps[6];来定义不要写为NoAndDis NoOps;
除非你的定义为
typedef struct str_NoAndDis
{
...
...
}NoAndDis;

3.你定义的函数是什么样的在VC6中可以直接使用#pragma once 来说明这个头文件之一次
4.//{{AFX_DATA(CPage1)
//{{AFX_DATA
对你的程序来说没有意思,是VC自己用的
5.#include "StdAfx.h"包含的内含不一样
6.一般是这样
zhukeke 2003-09-13
  • 打赏
  • 举报
回复
1。即然是extern,说明该变量是外部定义的,而不在本文件中定义,这时加static就没有意义了。
2。No0ps[0] 是指该结构体数组中变量元整体,自然不会有成员变量提示。
3。不知是什么编译错误,能否再详细些。
4。,//{{AFX_DATA(CPage1)
//{{AFX_DATA
是MFC用于类向导的,与编译无关。没有它,类向导可能无法正确工作,但对编译无影响。
5,StdAfx.h 包含了与你的工程类型相关的几个重要关文件(不同类型的工程包含的头文件是不一样的)。当然这些头文件并不是你的每个C++实现文件都需要,但MFC的类向导是不可能知道哪些需要,哪些不需要的。它只能保守地在每个用向导生成的C++文件前加一名#include "StdAfx.h".
6.一般是这样。
wangfengsdu 2003-09-13
  • 打赏
  • 举报
回复
4 这些都是Wizard产生的,
在进行编译的时候还要用到。
所以不能够删除和修改。
6 用SDK编写dll都是纯手工打造,所以累赘的东西少。
用wizard产生的东西就对一些东西进行了封装,即使你 用不到它,
所以用SDK编写的dll可能会小一些。
fuli1979 2003-09-13
  • 打赏
  • 举报
回复
上面的问题很有意思
但是我又不知道
因此我也很想知道
有谁知道
快让我们知道

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧