- 浏览: 56121 次
- 性别:
- 来自: 深圳
文章分类
最新评论
MSDN解释:编译器检测到未使用的函数原型。如果有意将该原型作为变量声明,则移除左/右括号。什么意思,简单来说,就是编译无法分辨你当前的代码是在声明一个函数原型,还是在调用一个函数.因为在VS编译器里这样声明一个函数是正确的:test(int(a),int(b)),但我们经常用他做为函数调用来使用。
Code
// compile with: /W1
class Lock {
public:
int i;
};
void f() {
Lock theLock();
// try the following line instead
// Lock theLock;
}
int main() {
}
当然你的意图是调用一个无参构造函数,然而编译器却认为你在声明一个函数.所以报错了.
解决方法是这样调用:test((int(a)),(int(b)));编译通过!!
附MSDN的一个例程:
Code
class BooleanException
{
bool _result;
public:
BooleanException(bool result)
: _result(result)
{
}
bool GetResult() const
{
return _result;
}
};
template<class T = BooleanException>
class IfFailedThrow
{
public:
IfFailedThrow(bool result)
{
if (!result)
{
throw T(result);
}
}
};
class MyClass
{
public:
bool Foo()
{
try
{
IfFailedThrow<>(MyMethod()); //error
// try one of the following lines instead
// IfFailedThrow<> ift(MyMethod());
// IfFailedThrow<>(this->MyMethod());
// IfFailedThrow<>((*this).MyMethod());
return true;
}
catch (BooleanException e)
{
return e.GetResult();
}
}
private:
bool MyMethod()
{
return true;
}
};
int main()
{
MyClass myClass;
myClass.Foo();
}
//在上面的示例中,不含参数的方法的结果作为参数传递给未命名本地类变量的构造函数。该调用会产生歧义:既可以是命名本地变量,也可以是使用对象实例以及相应的指向成员的指针运算符给方法调用加前缀。
Code
// compile with: /W1
class Lock {
public:
int i;
};
void f() {
Lock theLock();
// try the following line instead
// Lock theLock;
}
int main() {
}
当然你的意图是调用一个无参构造函数,然而编译器却认为你在声明一个函数.所以报错了.
解决方法是这样调用:test((int(a)),(int(b)));编译通过!!
附MSDN的一个例程:
Code
class BooleanException
{
bool _result;
public:
BooleanException(bool result)
: _result(result)
{
}
bool GetResult() const
{
return _result;
}
};
template<class T = BooleanException>
class IfFailedThrow
{
public:
IfFailedThrow(bool result)
{
if (!result)
{
throw T(result);
}
}
};
class MyClass
{
public:
bool Foo()
{
try
{
IfFailedThrow<>(MyMethod()); //error
// try one of the following lines instead
// IfFailedThrow<> ift(MyMethod());
// IfFailedThrow<>(this->MyMethod());
// IfFailedThrow<>((*this).MyMethod());
return true;
}
catch (BooleanException e)
{
return e.GetResult();
}
}
private:
bool MyMethod()
{
return true;
}
};
int main()
{
MyClass myClass;
myClass.Foo();
}
//在上面的示例中,不含参数的方法的结果作为参数传递给未命名本地类变量的构造函数。该调用会产生歧义:既可以是命名本地变量,也可以是使用对象实例以及相应的指向成员的指针运算符给方法调用加前缀。
发表评论
-
高精度
2011-08-31 20:40 978之前提到过在商业运算中要使用BigDecimal来进行相关的钱 ... -
java中如何进行高精度运算
2011-08-31 20:32 781import java.math.BigDecimal; im ... -
win7下安装vs2008
2011-01-09 23:28 845在win7下安装VS2008有点不太让人愉快,不过白痴还是找到 ... -
设置响应头字段的些许应用
2010-12-11 13:04 1049禁止浏览器缓存当前文档内容 只要增加如下的响应头字段: r ... -
正则表达式
2010-12-11 12:39 573整理资料如下: \\ 反斜杠 \t 间隔 ('\u0009' ... -
应该懂的基础问题
2010-12-11 12:14 676问题一:我声明了什么! String s = &quo ... -
Java中的堆栈
2010-12-11 10:59 633Java把内存划分成两种:一种是栈内存,一种是堆内存。 ... -
Java IO 小结
2010-12-11 10:51 588什么是数据流 ----------数据流是指所有的数据通信通道 ... -
字符转换
2010-11-30 20:43 621问:怎样将GBK 编码的汉字转换成为 UTF-8 编码的汉 ... -
进制转换
2010-11-30 20:42 783计算机操作里面时常要牵涉到二进制、十进制、十六进制等。特别是在 ... -
多叉树解决复杂表头问题
2010-11-30 20:21 760现代化WEB项目中少不了要用到报表展现.对于中国式报表来说,复 ... -
关于java编码的转换
2010-11-30 20:17 568问:怎样将GBK 编码的汉字转换成为 UTF-8 编码的汉 ... -
C++类型转换运算符重载
2010-11-30 20:06 841在C++中有一个特殊的运算符重载方法--类型转换运算符重载,形 ... -
ATL分解字符串
2010-11-30 20:05 739一个简单的分解字符串的方法: Code vector< ... -
java字符集(三)之java.io
2010-11-30 20:04 915java IO 的输出分两种,字节流: InputStream ... -
java字符集(二)
2010-11-30 20:03 653知道java的字符集编码,那么java是怎么读取内存中的字节转 ... -
编码字符集与字符集编码的区别(转)
2010-11-30 20:03 646需要再一次强调的是,无论历史上的UCS还是现如今的Unicod ... -
Unicode与UCS的历史恩怨(转载)
2010-11-30 19:59 543ASCII及相关标准 ... -
Java字符集(一)
2010-11-30 19:57 652UNICODE,GBK和BIG5就是编码的值,而utf-8,u ...
相关推荐
C++调用C函数实例详解 前言:以前见到extern “C”这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。 首先,为什么要使用extern “C”修饰符? C++调用其它语言的函数,由于编译器生成函数的...
在探讨宏定义与函数调用的区别时,我们深入解析它们在C语言编程中的特性、应用场景以及潜在风险,以便更全面地理解这两种编程机制。 ### 宏定义与函数调用的本质区别 #### 宏定义(#define) 宏定义是预处理器的一...
本文将深入探讨如何实现C调用C++函数,并以QT框架为例,提供一种实现方法。 首先,了解C与C++的差异是必要的。C++是C语言的超集,它扩展了C语言的功能,引入了类、对象、模板等面向对象特性。由于C++支持名称空间和...
总结来说,使用MVSC编译器生成XFG函数原型哈希是提升软件安全的重要手段,它通过精确控制调用目标,减少了攻击者利用控制流攻击的可能性。结合其他安全措施,如代码审查、入侵检测系统和安全开发生命周期,可以构建...
如果函数的定义在调用它的代码之后,那么必须在调用之前进行声明,否则编译器会因为找不到函数的定义而报错。 函数声明的一般形式如下: ```c 函数类型 函数名 (数据类型1 形式参数1 ,数据类型2 形式参数2 ,… );...
在计算机科学中,函数调用是程序执行过程中不可或缺的一部分,它允许我们把一系列相关的操作封装成独立的功能单元,便于重复使用和模块化编程。当我们谈论“二进制讲解函数调用”时,实际上是在探讨在处理器级别上,...
### ARM IAR C / C++ 编译器参考指南与 IAR 链接器及库工具使用介绍 #### 概述 本指南主要介绍了如何使用 IAR Embedded Workbench for ARM 的 C 和 C++ 编译器进行编译以及链接工作,并对 IAR 链接器和库工具进行了...
### 408函数-递归调用-全局变量和局部变量 #### 一、CLion环境下新建文件及函数管理 在CLion环境下新建文件,尤其是C/C++源文件,对于项目的组织和代码的管理非常关键。为了提高编程效率和调试效果,我们需要遵循...
参数个数”以及描述部分的内容来看,本文将深入探讨C++编程语言中关于函数重载(overloading)的概念及其关键要素,并明确指出在C++编译器如何识别不同重载函数时哪些因素是有意义的。 ### C++函数重载概述 #### ...
例如,对于函数int function(int a, int b),其在使用stdcall调用约定后,编译器会将其命名为_function@8(其中8代表参数总大小为8个字节)。函数调用时的汇编代码将依次将参数压栈,然后调用函数,函数内部通过相对...
**问题描述**:函数`DelayX1ms()`虽未被其他函数调用,但编译器仍然为其分配内存空间,增加了程序的负担。 **解决方法**:考虑删除`DelayX1ms()`函数,或者使用条件编译来保留该函数而不实际编译,如使用`#if ... #...
在content.txt文件中,我们期望找到关于易语言函数调用编译原理的详细源代码解释和示例,这将使我们能够更深入地了解这一过程,并可能为开发自己的编译器或解析器提供启示。通过学习和分析这个源码,我们可以学习到...
本节课程主要讲解了C语言函数的定义和调用,包括函数的定义、函数的类型、函数的调用、函数的声明、函数的执行等内容。 一、函数的定义 函数是指完成一个特定工作的独立程序模块,可以是库函数,也可以是用户...
函数调用模型是C语言程序设计的基础,它定义了如何从一个函数(主调函数)调用另一个函数(被调用函数)。这个模型允许程序员将复杂的问题分解为更小、更易管理的部分,提高代码的可读性和可维护性。 一、函数的...
函数可以被定义为执行特定任务的代码块,它们可以在程序的不同位置被多次调用,从而提高了代码的重用性和模块化。 4.1 函数的定义与调用 4.1.1 函数概述 C++程序通常包含一个特殊的函数`main()`,它是程序执行的...
重入函数是一种特殊类型的函数,允许在中断或并发情况下被调用,它们不会使用全局数据,而是依赖于局部变量或者由调用者提供的存储空间。 在C语言源文件(如`testc.c`)中,我们需要声明这些外部函数,这样编译器...
例如,C++编译器可能将函数名`foo`修改为`_Z3fooii`,其中`_Z`表示该函数是C++函数,而`3`表示函数名的长度,`foo`是函数名,`ii`表示函数的参数类型。在这种情况下,C编译器编译后的函数名不会经过名称 mangling,...
在 C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”? extern "C" 是连接申明(linkage declaration),它告诉编译器,以 C 语言的方式编译和连接变量和函数。这种方式使得 C++ 程序可以调用被 C ...
例如,若`addTwoNumbers`接受两个char类型的参数,且函数原型为`char addTwoNumbers(char a, char b)`,在调用前,应将参数a和b分别置于寄存器A和B中(假设汇编语言中A和B对应于C51中的R0和R1)。然后,通过跳转指令...
《迷你型C++编译器和函数编译手册》是一个小巧而实用的工具,它集成了C++编程语言的编译环境以及一个便捷的函数速查手册。对于初学者和经验丰富的开发者来说,这都是一个不可多得的资源。下面我们将深入探讨C++...