Error:"_TCHAR**"的实参与"char**"的形参不兼容

使用VS2010编写自己的第一个openGL代码遇到了这样的问题

#include "stdafx.h"
#include "glut.h"

int _tmain(int argc, _TCHAR* argv[])
{
	glutInit(&argc,argv);//Error:"_TCHAR**"的实参与"char**"的形参不兼容
	return 0;
}

在网上搜索了一些解决方法,自己总结如下:

char是C语言标准数据类型,字符型,至于由几个字节组成通常由编译器决定,一般一个字节。

Windows为了消除各编译器的差别,重新定义了一些数据类型,char和tchar就是这样。

CHAR为单字节字符。还有个WCHAR为Unicode字符,即不论中英文,每个字有两个字节组成。

如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。LPCSTR 相当于CONST CHAR * 和LPSTR 相当于CHAR *。

故我们可推测,此时编译方式出现问题,因此我们设置一下编译方式即可。

采用将编译方式设置为ANSI,项目->属性->项目默认值->字符集,然后把UNICODE选成多字节,重新编译,这样我们就完成了设置,并且Error得到了解决。

时间: 2024-10-22 01:21:32

Error:"_TCHAR**"的实参与"char**"的形参不兼容的相关文章

MFC中字符串赋值出现“Error:“const char*”类型的实参与“LPCWSTR”类型的形参不兼容”错误的解决方法

在编译MFC工程时,写下面代码出现了“Error:“const char*”类型的实参与“LPCWSTR”类型的形参不兼容”的错误. TextOut(hdc,0,0,"Mercedes",strlen("Mercedes")); 这是由于工程采用Unicode编码,这时“Mercedes”字符串类型为“wchar_t*”, 这时应该这样赋值: TextOut(hdc,0,0,_T("Mercedes"),strlen("Mercedes

Error:const char* 类型的实参和LPCWSTR类型的形参不兼容的解决方法。

在C++的Windows 应用程序中经常碰到这种情况. 解决方法: 加入如下转换函数: LPCWSTR stringToLPCWSTR(std::string orig) { size_t origsize = orig.length() + 1; const size_t newsize = 100; size_t convertedChars = 0; wchar_t *wcstring = (wchar_t *) malloc(sizeof(wchar_t) *(orig.length()

Error:不能将"char*"类型的值分配到"LPSTR"类型的实体 或者 "char*"类型的实参与"LPCWSTR"类型的形参不兼容

选择"XXX项目"->"属性"->"配置属性"->"常规"选项中,把"使用 Unicode 字符集"改为"使用多字节字符集",然后确定.如下图(VS2012):

Error:不能将"char*"类型的值分配到"LPSTR"类型的实体 也许 "char*"类型的实参与"LPCWSTR"类型的形参不兼容

http://www.myexception.cn/ruby-rails/1876106.html 选择“XXX项目”->“属性”->“配置属性”->“常规”选项中,把“使用 Unicode 字符集”改为“使用多字节字符集”,然后确定.如下图(VS2012):

js 函数实参列表arguments和形参的那点事儿

//如果实参和形参数量相等,那么形参和argments之间有种映射关系,形参变量值改变对应位置的arguments[i]也随之改变,反之亦然. function test(a,b){ b = 3; console.log(arguments[1]); //3 arguments[1] = 4; console.log(b); //4 } test(1,2); //如果实参比形参少,那么多余的形参和argments之间就没有了映射关系,即多余形参值得改变,对应位置的arguments[i]的值仍为

error C2664: “FILE *fopen(const char *,const char *)”: 无法将参数 1 从“LPCTSTR”转换为“const char *”

遇到这个问题,请打开本项目的Properties(属性)-------> Configuration Properties(配置属性)-------->General(常规)------->Character Set(字符集)  把Use Unicode Character Set(使用Unicode字符集) 改成使用  Use Multi-byte Character  Set (使用多字节字符集).最后别忘了  应用------>确定.

Win32程序:与"LPCWSTR"类型的形参不兼容

出现该问题的原因是通常手动输入的字符串都是LPCSTR类型的, 解决办法如下: 在工程处右键,属性-常规-字符集,将Unicode字符集改为为多字节字符集,应用并确认即可.   字符串常量报错: 在常量报错时使用"_T"宏(若出现未定义标识符,则需增加头文件#include <tchar.h>),格式:_T( ) 或者使用关键字"L",格式:L"" 或者使用TEXT,格式TEXT( )

关于Java中形参与实参的理解

今天阅读了一个写的非常棒的博文,通过此博文再次复习了Java中参数传递的知识(即值传递与引用传递的区别).参考网站http://www.cnblogs.com/binyue/p/3862276.html.下面我将通过次博文记录自己的理解,还望能够帮助再学Java或者复习Java的朋友们. 一.基本类型与引用类型在内存中的保存内容 Java中的变量分为基本类型和引用类型两种.基本类型的变量保存数值本身,而引用类型的变量保存的是引用值,即指向内存空间的地址. 基本类型包括:byte,char,int

参数传递:传值参数,指针形参,传引用参数,const形参和实参,数组形参,main:处理命令行选项,含有可变形参的函数

重点: 1.每次调用函数时都会重新创建它的形参,并用传入的实参对形参进行初始化. NOTE: 形参初始化的机理与变量初始化一样. 2.形参的类型决定了形参和实参交互的方式. (引用->绑定,非引用->拷贝) 3.实参分为:被引用传递(引用形参是实参的别名),被值传递(实参形参是两个相互独立的对象). 4.传值参数:函数对形参做的所有操作都不会影响实参. 5.指针形参:指针的行为和其他非引用类型一样,当执行指针拷贝操作时,拷贝的是指针的值.拷贝后,两个指针是不同的指针. NOTE: C程序员常常