找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1257|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

一個(gè)非常奇怪的C語(yǔ)言變量定義,編譯問(wèn)題,折騰幾天了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:791737 發(fā)表于 2022-4-17 16:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
key.h 文件 C語(yǔ)言代碼如下
#ifndef __KEY_H__
#define __KEY_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "main.h"

extern uint16_t key_id ;        //key編號(hào)

void Scan_key(uint16_t GPIO_Pin);
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

#ifdef __cplusplus
}
#endif

#endif


————————————————————————————————-
上邊 全局變量這里報(bào)錯(cuò)
描述        資源        路徑        位置        類型
undefined reference to `key_id'        key.c        /H7B0VB/user        第 22 行        C/C++ Problem


把全局變量定義命名去掉,換成
uint16_t key_id ;        //key編號(hào)

就沒(méi)問(wèn)題,但是我需要它全局呀,
我用的是cubemx生成的初始代碼,百思不得其解。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:732794 發(fā)表于 2022-4-17 20:10 | 只看該作者
別在h文件里,在C里面聲明試試呢
回復(fù)

使用道具 舉報(bào)

板凳
ID:791737 發(fā)表于 2022-4-17 20:34 | 只看該作者
51FAN2020 發(fā)表于 2022-4-17 20:10
別在h文件里,在C里面聲明試試呢

放在c里面不報(bào)錯(cuò),
但是這個(gè)變量其他文件要引用的
頭文件不包含,其他文件會(huì)報(bào)錯(cuò)。
回復(fù)

使用道具 舉報(bào)

地板
ID:732794 發(fā)表于 2022-4-17 20:42 | 只看該作者
kadiya 發(fā)表于 2022-4-17 20:34
放在c里面不報(bào)錯(cuò),
但是這個(gè)變量其他文件要引用的
頭文件不包含,其他文件會(huì)報(bào)錯(cuò)。

試試extern volatile
回復(fù)

使用道具 舉報(bào)

5#
ID:791737 發(fā)表于 2022-4-17 21:01 | 只看該作者

我一開始就是這種定義方式,不行。
cubemx自動(dòng)生成的代碼,也有在h文件里  extern 定義的方式,為什么他們的不報(bào)錯(cuò),我的報(bào)錯(cuò),這是我最困惑的。
回復(fù)

使用道具 舉報(bào)

6#
ID:791737 發(fā)表于 2022-4-18 10:28 | 只看該作者
我用的平臺(tái)是cubeide 準(zhǔn)備換keil,試一下。
回復(fù)

使用道具 舉報(bào)

7#
ID:791737 發(fā)表于 2022-4-18 15:23 | 只看該作者
找到問(wèn)題了,參考cubeide下定義的方法,extern在頭文件定義后,在c文件里去掉extern再定義一遍
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表