Rumah > Soal Jawab > teks badan
以下代码编译通过也能正常运行,但编译器会在第一行显示警告。警告为:
'extern' variable has an initializer。// 'extern'变量初始化
// main.m
extern int var = 10;
int main(void)
{
var = 10;
return 0;
}
目前对extern的认识是:它是会声明一个工程内全局共享变量,但不给予实现,也就是不会为其申请内存,等到定义时才会申请内存空间。
正常的使用方法如下:
// .h
extern int var;
// .m
int var = 10;
我的认识是:警告的原因是extern是设计用来声明一个变量或方法,并未涉及定义。但语法也是允许定义为其分配内存空间。
问题是:
设计成错误和警告的界限应该是警告代表编译通过,但运行时是否发生错误就不确定了,可能崩溃也可能不崩溃。错误那就是显而易见的无法通过编译。那么编译出现警告的原因都有哪些呢?(貌似这个问题蛮大的,提出来就是想讨论总结下)
目前已知的 Xcode编译出现警告的原因:
API is deprecated
类型问题。 比如应传入NSInteger类型,但传入的是NSObject类型。
还有上面的这个例子,但这属于什么类型的编译警告呢?语法不推荐吗?
怪我咯2017-04-18 09:31:47
Amaran kompilasi untuk semua bahasa
Cari GCC dalam Sasaran->Tetapan Bina-> (ingat untuk memilih Semua di sebelah kiri kotak carian)
Anda masih boleh melihatnya dengan menatal ke bawah Amaran untuk setiap bahasa
Untuk maklumat tentang menghidupkan amaran, semak blog Miao Shen
Alamat mudah untuk menghapuskan amaran
Selamat datang untuk menambah!