标题:vc中调用windows api的问题
只看楼主
monkey11
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-10-29
结帖率:66.67%
已结贴  问题点数:10 回复次数:16 
vc中调用windows api的问题
为什么用vc++6.0写程序调用windows api函数的时候在函数名前面加::会出现语法错误呢
#include<stdio.h>
#include<windows.h>
int main(int argc,char *argv[])
{
    int nSelect=::MessageBox(NULL,"This is my first windows program","hello",MB_OKCANCEL);
    if(nSelect==IDOK)
        printf("用户选择了确定按钮\n");
    else
        printf("用户选择了取消按钮\n");
    return 0;

}
D:\windowsapi\myfirstprogram\dd.c(5) : error C2059: syntax error : ':'
跟新建的工程有关系吗??
搜索更多相关主题的帖子: windows include return hello 
2013-04-11 09:14
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:2 
加 :: 是为啥呢

DO IT YOURSELF !
2013-04-11 09:29
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:2 
你写错了吧 ,::为域名解析符 意思是指后面的Messagebox是全局的

如果本作用域 (局部)不存在同名的 没必要写::
2013-04-11 09:43
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
域名解析符的作用 主要是因为编译器在编译代码时 对于变量、函数等的定义查找是由当前作用域往外扩展的。
如果有全局变量和局部变量同名,采用域名解析时会直接调用全局变量 否则会调用最近作用域的局部变量!
2013-04-11 09:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
因为C语言中没这概念
2013-04-11 10:01
monkey11
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-10-29
得分:0 
回复 4楼 hahayezhe
那直接调用全局的不是也可以的吗,为什么会报错呢??
2013-04-11 10:03
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 6楼 monkey11
程序代码:
#include<stdio.h>
#include<windows.h>
int main(int argc,char *argv[])
{
    int nSelect=MessageBox(NULL,L"This is my first windows program",L"hello",MB_OKCANCEL);
    if(nSelect==IDOK)
        printf("用户选择了确定按钮\n");
    else
        printf("用户选择了取消按钮\n");
    return 0;

}

DO IT YOURSELF !
2013-04-11 10:05
monkey11
Rank: 1
等 级:新手上路
帖 子:19
专家分:4
注 册:2012-10-29
得分:0 
回复 2楼 wp231957
我本来以为那个是api函数的标志,经过楼下指点明白了,那个是个作用域标识符,但是还是不明白为啥会有错误,而且有的时候也不会报错啊,就直接新建工程然后写代码就不会报错,但是如果用txt写然后改扩展名为.c再运行就会报错
2013-04-11 10:07
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
.C 就是5楼的概念了  。c 代表c  。cpp代表c++

DO IT YOURSELF !
2013-04-11 10:08
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用monkey11在2013-4-11 10:07:16的发言:

我本来以为那个是api函数的标志,经过楼下指点明白了,那个是个作用域标识符,但是还是不明白为啥会有错误,而且有的时候也不会报错啊,就直接新建工程然后写代码就不会报错,但是如果用txt写然后改扩展名为.c再运行就会报错
有时候不报错 是和编译器有关的  

比如7楼的代码 在vs2010下  加不加 双冒号  都可以运行的

DO IT YOURSELF !
2013-04-11 10:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-403771-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057552 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved