• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

新手提问:请教几个问题?

amiao 2004-11-24 03:25:46
1. 在头文件中定义了一个字符串,const char* str = "hello, world";
编译程序OK,但链接程序报错
‘error LNK2005: "char const * const str" (?str@@3PBDB) already defined in apicommDlg.obj’
而为什么 const char str[] = "hello, world"; 却正确

2. ::AfxMessageBox("hello,world"); 中的‘::’是什么意思?不加此符号和加上符号有什么区别?

3. VC中有没有类似Delphi中这样的功能:
xxx.pas文件中启动初始化类
var
hs : OCommon;

initialization
hs.Create;

finalization
hs.Destroy;

4. unsigned 是 32 位的无符号数据类型,那么 unsigned char c; 中的 c 是几位?占用几个字节空间?

5. C++ 中的各种指针占用内存空间是否一样,几个字节? char* p1 和 int* p2,p1 和 p2 在栈上是否都

占用 4 个字节空间?

6. 怎样获得当前执行文件的路径名称?类似Delphi中的ExtractFilePath(Application.ExeName);

7. 宏定义(#define)和常量定义(const)到底有什么区别?他们怎样存储?
定义了 #define HELLO "hello,world" 这样一个宏,怎样使用?

8. VC中有没有类似Delphi中的 Application.ProcessMessages; 同步应用程序函数

9. 在上面的函数内,有如下代码:
CApicommDlg &p=*(CApicommDlg *)pParam;
p.UpdateData(TRUE); // 编译链接正确,运行出错
p.m_strReceive = "hello,world"; // 编译链接运行正确
为什么 p.UpdateData(TRUE) 会报错,而调用其他的变量正确?
...全文
106 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
amiao 2004-11-24
多谢楼上各位的热心帮忙,希望以后我的帖子大家多捧场!
回复
oyljerry 2004-11-24
AfxMessageBox(HELLO); // ERROR
参数为char*
回复
oyljerry 2004-11-24
1. 重复定义了,可能头文件重复包含

2. 域作用符,确定作用域

4. 8位,1字节
5. 指针都是4字节

6. GetModulePath

7. 一个宏定义,编译时展开,常量定义,定义时初始化

回复
echoxue 2004-11-24
up
回复
zhaopeng3 2004-11-24
取最大值例子
#define MAX(a,b) ((a) > (b)) ? (a) : (b)

int a = 10;
int b = 20;
int c = MAX(a, ++b);

运行结果c=22,MAX(10, 21)应该是21
回复
zhaopeng3 2004-11-24
1. 重复定义,移到cpp文件中
2. ::代表使用全局的函数,没有的话优先考虑类的函数
3. 没学过Delphi,看不懂
4. unsigned char 1个字节,8位
5. 指针都是4个字节
6. GetCurrentDirectory得到程序运行的起始位置(快捷方式的属性中),大部分是程序所在的位置
7. 宏定义在编译时被展开替换,建议使用常量,经典例子是取最大值,用宏定义保证出错
8. 同3
9. 不知道,一般没有这样用的,但UpdateData是公有函数,应该可以由外部调用.
回复
andrew_ma 2004-11-24
1.需要为指针new个空间
9.p是个动态创建的对话框,所以需创建一下
p.creat(UINT nIDTemplate)
回复
amiao 2004-11-24
#define HELLO "hello,world";
CString hello("hello,world");

怎样才能像 hello 一样正常使用 HELLO?
比如:
AfxMessageBox(hello);
AfxMessageBox(HELLO); // ERROR
回复
amiao 2004-11-24
1。以前我定义的是 const char* ,刚开始编译链接都正确,后来调用之后好像就总是报这个错误,换个常量名字却又是编译链接正确

sock5(|一生何求|) && crushor()
9。你们的方法好像不对
回复
crushor 2004-11-24
1。我觉得没有问题。
4。unsigned char 占一字节
5。指针都是一样的,都是地址。
6。我记得好像是winapp对象直接有成员变量是什么程序名啊,路径啊之类的。
9。这个好像是说对话框还没有创建,所以错误,把这一句放到后面试下看。
回复
konista 2004-11-24
konista(M),对不住。
////////////////
没关系,我经常写错的,这次偶尔写对,嘿嘿
回复
sock5 2004-11-24
8。你说的意思是像VB中的DoEvents事件吧,非同步消息队列,VC中不存在这个,只有自己做线程同步了!

9。你用的是多线程LPVOID吧
UpdateData是私有内部成员,也就是说你不可以在该类以外的地方调用它,在对话框中做一函数,函数里边调用UpdateData()
回复
hjunxu 2004-11-24
呵呵,好象我看错了,
konista(M),对不住。
回复
hjunxu 2004-11-24
改正 konista(M) 的一个答案,
4.unsigned 是 32 位的无符号数据类型,那么 unsigned char c; 中的 c 是几位?占用几个字节空间?
unsigned char 是一个BYTE。
回复
sock5 2004-11-24
6.GetCurrentDirectory() 返回的是程序文件所在的路径
回复
sock5 2004-11-24
2.字符串前面的::是代表调用全局函数或变量,你个函数的意义是代表使用API中的MessageBox,而不是使用MFC封装后的MessageBox
回复
sock5 2004-11-24
1.没为指针分配地址,如下写法
char* str = new char[20];
str = "hello,world",
回复
konista 2004-11-24
1.const char * APPPATHNAME = _T("C:\\Program Files\\ICIT\\bin\\cachet\\Reader.exe");我用着没问题啊
2.域,::AfxMessageBox指全局函数,比方说
int a;
main()
{
int a;
::a;//外面那个
a;//里面的a
}
3.有
4.8bits,一个字节
5.都占4个字节
6.GetModuleFileName
7.使用起来差不多,但宏定义会预编译,你的程序中将只有"hello,world",而常量则存在HELLO
8.该不会是WinProc吧。
9.这个不太清楚。
回复
amiao 2004-11-24
分这么好拿,怎么没人顶!?
回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-11-24 03:25
社区公告

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