vs2012-C++ void 符号常量指针

问题描述

C++ void 符号常量指针

初学 C++
编译器(vs2012)上有这样一段代码无法编译:typedef void far * XMSDRIVER;
在 * 处提示错误 “应输入;”

关于 far 的定义如下:
#ifndef FAR
#ifdef NEED_FAR_POINTERS
#define FAR far
#else
#define FAR
#endif
#endif

解决方案

typedef void* XMSDRIVER;

解决方案二:

typedef void* XMSDRIVER;

解决方案三:

并没有定义far啊?

你define的是FAR,那个define的意思是把FAR替换成far,但far本身没有被定义。所以编译器看到了typedef void far,认为你给void起了个别名far,所以让你在far后面,也就是*前面加一个分号。

解决方案四:

参考 《c++primer》自己查,看完应该这种问题就没了

时间: 2024-11-08 20:10:49

vs2012-C++ void 符号常量指针的相关文章

C/C++下void*类型指针介绍

           写C/C++程序经常会遇到void*类型的指针,以前对于这种指针没有去深究,只要程序可以正常运行就得过且过了,今天在网上搜了一些资料,才算是对这个void*类型指针有了更多的认识.            void*顾名思义就是不指向任何对象的指针,也被称为通用指针或者是泛型指针.也是C语言下"纯粹地址"(raw address)的一种约定.void*仅仅指示一个地址,但是因为其不指向任何类型的对象,所以当得到一个void*类型指针指向的一段内存时,并不能直接使用v

C++中野指针和空指针和无类型指针

一. 野指针 所谓的野指针指的是一个指针变量指向了不可使用的内存空间. 产生野指针三个原因: (1)指针变量创建时候没有被初始化:任何指针变量在创建的时候,不会自动成为NULL指针,它的默认值是随机的,因此该指针就会成为一个野指针,可能指向一块不可使用的内存空间.          例如char *p;  这样创建一个指针p,指向一个随机的内存地址空间          所以指针在创建的时候要被初始化,可以讲其初始化为NULL,或指向合法的内存空间          比如 char *p = N

把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)

督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另一个vector,也是将一个vector 的元素逐个赋值给另一vector 的对应元素: //将一个vector 赋值给另一vector,使用迭代器访问vector 中的元素 vector<int> ivec(10, 20); vector<int> ivec1; for (vecto

NULL指针\零指针、野指针

野指针:"野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.人们一般不会错用NULL指针,因为用if语句很容易判断.但是"野指针"是很危险的,if无法判断一个指针是正常指针还是"野指针".  "野指针"的成因主要有三种: 1)指针变量没有被初始化.任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气.所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL

C++裸指针和智能指针的效率对比

  1.unique_ptr与queue连用,unique_ptr的使用特点:不能使用拷贝构造函数,拷贝赋值函数,但是可以使用move构造函数和move赋值函数. 2.std::move的使用,可以将左值表达式强制转化成为右值表达式 3. 重载new操作符调试内存使用情况,因为心里不是很放心(智能指针真的为我释放了内存么?)所以尝试了重写new delete操作符. 4. 得到的结果是raw_ptr:unique_ptr:shared_ptr的性能是5:7:11,可见智能指针的效率还是相当诱人.

成员函数指针与高性能的C++委托 (Member Function Pointers and the Fastest Possible C++ Delegates)

标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托(delegate)")在一些语言中已经证明了它宝贵的价值.在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础.而在目前,C#使"委托"的概念日趋流行,这也正显示出C#这种语言的成功.在很多应用程序中,&qu

《C和C++代码精粹》——2.5 普通指针

2.5 普通指针 C和C++代码精粹 通常编写能接收指向任意类型参数的函数是很方便的.这是很有必要的,例如,用标准的库函数memcpy,能够从一个地址向另一个地址拷贝一块内存.你也可能想调用memcpy来拷贝自己创建的结构: struct mystruct a,b; /.../ memcpy(&a,&b,sizeof(struct mystruct)); 为了操作任意类型的指针,memcpy把它头两个参数声明为void型指针.可以不需要强制类型转换将任何类型的指针赋予void类型.也可以在

指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数

 1.指针数组    数组里面的每个元素都是指针.    指针数组的案例如下:    易犯错误: 2.数组指针   归根结底还是指针,只是取*的时候能够取出一整个数组出来. 数组指针:(一个指针指向了数组,一般和二维数组搭配使用). 下面的(p+1)表示的是加过20个字符.   3.函数指针: 在gcc编译的时候增加一些调试信息的方式是: gcc demo.c –g –o app   -g表示增加一些调试信息 objdump –dSsx app > file   将app反汇编,然后重定向到

c语言-c中不同类型指针之间的转换

问题描述 c中不同类型指针之间的转换 不同类型的指针为什么可以装换,例如: void * a; char c=a; a=(void * ) &c; 指针不就是一个地址在里面么,有什么好转换的? 解决方案 指针的本质是都一样的,转换类型是让编译器知道怎么看所指向的内容. 解决方案二: 只有转换了才能通过编译 不同的指针 ++ --等结果也不同 sizeof也不同 解决方案三: 不同类型之间的转换C 不同类型指针的相互转化不同数字类型之间的转换---------------------- 解决方案四