C語言安全編碼數(shù)組記法的一致性
更新時(shí)間:2014年07月07日 14:36:37 投稿:shichen2014
這篇文章主要介紹了C語言安全編碼數(shù)組記法的一致性,需要的朋友可以參考下
對C語言程序來說,在同一文件中時(shí),void func(char *a); 和 void func(char a[]); 完全等價(jià)
但在函數(shù)原型之外,如果一個(gè)數(shù)組在一個(gè)文件中聲明為指針,在另一個(gè)不同的文件中聲明為數(shù)組,那么它們是不等價(jià)的
示例代碼如下:
//main.c
#include<stdlib.h>
enum {ARRAYSIZE = 100};
char *a;
void insert_a(void);
int main(void) {
a = (char*)malloc(ARRAYSIZE);
if(a == NULL) {
//處理分配錯(cuò)誤
}
insert_a();
return 0;
}
//insert_a.c
char a[];
void insert_a(void) {
a[0] = 'a';
}
解決方案如下:
//insert_a.h
enum {ARRAYSIZE = 100};
extern char *a;
void insert_a(void);
//insert_a.c
#include "insert_a.h"
char *a;
void insert_a(void) {
a[0] = 'a';
}
//main.c
#include<stdlib.h>
#include"insert_a.h"
int main(void){
a = (char*)malloc(ARRAYSIZE);
if(a == NULL) {
//處理分配錯(cuò)誤
}
insert_a();
return 0;
}
相關(guān)文章
SublimeText編譯C開發(fā)環(huán)境設(shè)置
這篇文章主要介紹了使用SublimeText編譯C代碼的開發(fā)環(huán)境設(shè)置,大家參考使用2013-11-11
NDK 數(shù)據(jù)結(jié)構(gòu)之隊(duì)列與棧等的實(shí)現(xiàn)
這篇文章主要介紹了NDK 數(shù)據(jù)結(jié)構(gòu)之隊(duì)列與棧等的實(shí)現(xiàn)的相關(guān)資料,希望通過本文大家能理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號問題
這篇文章主要介紹了C++調(diào)用C函數(shù)報(bào)錯(cuò)無法解析的外部命令/無法解析的外部符號問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08

