支撑函数(support function)

有时候我们对一个线性函数 ,x 在一个凸集 C 上的极值感兴趣,我们研究这个问题的方法是讨论当 x 变化时,极值如何变化。所以我们有如下定义:

定义1.
凸集 C 的支撑函数(support function) δ(x|C) 定义为:

δ(x|C)=sup{ x,x|xC}
.
以上情况对应的是极大化线性函数,相应的可以极小化:
inf{ x,x|xC}=δ(x|C)
.

考虑包含 C 的闭的半空间:

C{x|x,xβ}

上式成立当且仅当:

βδ(x|C)

所以我们说 C 的支撑函数 δ(x|C) 描述了包含
### ISO C99 及之后标准不支持隐式函数声明的原因 C99 标准引入了一项重要的改进,即取消了对隐式函数声明的支持。这一决定的主要原因是,在早期的 C89/C90 标准中允许隐式函数声明会带来潜在的安全隐患和程序错误[^1]。当编译器遇到未声明的函数调用时,默认将其视为返回 `int` 类型的函数。这种行为可能导致以下问题: - **数据类型不匹配**:如果实际函数返回的是其他类型的值,则可能会引发不可预测的行为或运行时错误。 - **参数数量和类型错误**:由于缺少显式的原型声明,编译器无法验证传递给函数的实际参数是否与其定义一致。 因此,为了提高代码的健壮性和可维护性,C99 明确规定任何被调用的函数都必须在其首次使用之前进行正确定义或声明[^4]。 ### Keil 编译器中的处理方式 针对上述提到的 “call to undeclared function” 错误,在使用 Keil 编译器开发项目时可以采取以下措施来解决问题并遵循现代编码实践的要求: #### 1. 确保头文件正确包含 检查源码中涉及的所有外部库或者自定义模块对应的头文件是否已被适当加入到当前文件里。例如,对于某些特定功能如温度电压获取(`DL_FactoryRegion_getTemperatureVoltage`)或其他系统级APIs (`SecItemExport`) ,应该确认它们所属的标准库路径已配置好,并通过预处理器指令`#include`加载必要接口说明[^2]。 ```c #include <stdio.h> /* 如果需要用到 printf 或 scanf */ #include "custom_lib.h" /* 自己项目的辅助库 */ ``` #### 2. 声明缺失的函数原型 如果某个函数仅在一个单独的地方实现而没有全局可见的头文件可用,则可以在相应位置手动添加其前向声明。这通常发生在多文件工程环境下,部分逻辑尚未完全封装成独立组件的情况下。 ```c // 函数原型声明 float DL_FactoryRegion_getTemperatureVoltage(void); ``` 此操作需注意保持签名一致性(包括名称、参数列表及返回值),否则仍可能引起链接阶段冲突等问题。 #### 3. 调整编译选项兼容旧风格语法 (不推荐) 虽然可以通过修改Keil工具链设置降低警告级别甚至重新启用对隐含声明的支持,但这违背了当代软件工程最佳做法并且容易埋下长期隐患。除非确实面临特殊历史遗留资产迁移场景外,一般不应考虑这种方法作为常规解决方案[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值