Saya mencoba menyelesaikan masalah 3n + 1 dan saya memiliki for
loop yang terlihat seperti ini:
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Sayangnya saya mendapatkan kesalahan ini ketika mencoba mengompilasi dengan GCC:
3np1.c: 15: error: 'for' deklarasi awal loop digunakan di luar mode C99
Saya tidak tahu apa itu mode C99. Ada ide?
Ada sakelar kompiler yang mengaktifkan mode C99 , yang antara lain mengizinkan deklarasi variabel di dalam perulangan for. Untuk menyalakannya gunakan saklar kompilator
-std=c99
Atau seperti yang dikatakan @OysterD, deklarasikan variabel di luar loop.
sumber
Untuk beralih ke mode C99 di CodeBlocks , ikuti langkah-langkah selanjutnya:
Klik Project / Build options , lalu di tab Compiler Settings pilih subtab Other options , dan tempatkan
-std=c99
di area teks, dan klik Ok .Ini akan mengubah C99 mode untuk Compiler Anda.
Saya harap ini akan membantu seseorang!
sumber
-std=gnu99
seperti yang digambarkan dalam beberapa jawaban di atas!Saya mendapatkan kesalahan ini juga.
tidak valid dalam standar C89 / C90. Seperti yang dikatakan OysterD, Anda perlu melakukan:
Kode asli Anda diperbolehkan dalam C99 dan standar bahasa C.
sumber
@Tokopedia :
Fitur Baru di C99
http://en.wikipedia.org/wiki/C99
Tur C99
sumber
jika Anda mengkompilasi dalam perubahan C.
untuk
Anda juga dapat mengompilasi dengan set sakelar C99. Letakkan -std = c99 di baris kompilasi:
REF: http://cplusplus.syntaxerrors.info/index.php?title= 'for'_loop_initial_declaration_used_outside_C99_mode
sumber
Bagi siapa pun yang mencoba mengompilasi kode dari sumber eksternal yang menggunakan utilitas build otomatis seperti Make , untuk menghindari keharusan melacak panggilan kompilasi gcc eksplisit, Anda dapat menyetel variabel lingkungan. Masuk pada command prompt atau masukkan .bashrc (atau .bash_profile di Mac):
Perhatikan bahwa solusi serupa berlaku jika Anda mengalami skenario serupa dengan kompilasi C ++ yang memerlukan C ++ 11, Anda dapat menggunakan:
sumber
Saya memiliki masalah yang sama dan berhasil, Anda hanya perlu mendeklarasikan bagian
i
luar loop:sumber
Jihene Stambouli menjawab pertanyaan OP paling langsung ... Pertanyaannya adalah; Kenapa
menghasilkan kesalahan;
yang jawabannya adalah
seharusnya
sumber
Aktifkan mode C99 di Code :: Blocks 16.01
sumber
Untuk pembuat Qt: cukup tambahkan baris berikutnya ke file * .pro ...
sumber