Bir yapının belirli bir üyesini nasıl geçici olarak bildiriyorsunuz?C'de, bir yapının üyelerini nasıl uçucu olarak ilan edersiniz?
cevap
olmayan struct
alanlar birbirinin aynı:
#include <stdio.h>
int main (int c, char *v[]) {
struct _a {
int a1;
volatile int a2;
int a3;
} a;
a.a1 = 1;
a.a2 = 2;
a.a3 = 3;
return 0;
}
Sen "volatile struct _a {...}"
kullanarak tüm struct
gibi uçucu işaretleyebilirsiniz ancak yukarıdaki yöntem bireysel alanlar içindir.
this makaleye göre oldukça yalındır olmalıdır:
Son olarak, bir yapı veya birliğe uçucu uygularsanız, tüm içeriği struct/birliğin uçucu bulunmaktadır. Bu davranışı istemiyorsanız, struct/union öğesinin bağımsız üyelerine bireysel üyelerini uygulayabilirsiniz.
Sadece C/C++ uçucu anahtar sözcüğündeki bir uyarı.
Ne yaptığınızı bilmiyorsanız, onu asla kullanmamalısınız.
C/C++ uçucu! = Java/Gerçekten sen, C++ 0x atomik şablonunu (ya da bir şey benzer) kullanmak gerekir ne yaptığını bilmiyorsanız dişli kodunda yardımcı olmuyor uçucuuçucu C#.
Uçurumu kullanmak için kullanmam gereken tek zamandır, donanım kayıtlarını kontrol etmek.
Bazı kesilmelere (örneğin, bir sinyal işleyici veya başka (yakın) atomik değişken) hizmet verdiğinden, uçucu olarak bildirilen üyeler değişmezse, büyük olasılıkla uçucu olmamalıdır (çoğu derleyici, yeterince yakın). Diğerleri söylediler gibi derleyici aslında sizin :) Bazı durumlarda
, yani aynı fikirdeyse
Aksi halde .. sadece görmek için daha sonra asm incelemek dökümlerini kullanmak gcc belirli sürümleri .. o kontrol onun değerinde döker.
- 1. uçucu olarak ilan edilemez, bu hak ?: olduğunu
- 2. İleri isimsiz yapının bir typedef ilan
- 3. Uçucu Yapı Anlamları
- 4. Uçucu aslında nasıl çalışır?
- 5. python'da düzenli ifade: "ab-cde" yi ['a', 'b', 'cde'] olarak değiştirmenin en iyi yolu
- 6. Bir değişkeni bir yapının adı olarak nasıl ayarlayabilirim?
- 7. Bir yapının bildirilmesi: typedef struct name name;
- 8. C++ kurucunun içinde bir uçucu işaretçi olarak nasıl yapılır
- 9. Bir AD grubunun üyelerini
- 10. mdx çıkış karakteri CDE Pentaho
- 11. Uçucu değişken, javada statik olarak tanımlanabilir mi?
- 12. printf bir yapının adresini görmek nasıl
- 13. Bahar fasulyesini şartlı olarak ilan edebilir miyiz?
- 14. Bir yapının sınıftaki çocuklarına nasıl döngü yapılır?
- 15. Niçin "uçucu int * p" gibi bir uçtan uca işaretçi yararlıdır?
- 16. Ben aynı tip uçucu nesneye bir nesne atamak istediğiniz bir uçucu nesneye
- 17. Kotlin'in uçucu özellikleri?
- 18. Java uçucu dizisi?
- 19. Bir proxy'yi bir hizmete nasıl enjekte edersiniz?
- 20. İleri ilan ve bir optimizasyon olarak tek adımda
- 21. Bir uçucu değişkeni c'deki bir işleve nasıl geçiririm?
- 22. İleri ilan tipi ve
- 23. JWPlayer İlan Atlama düğmesi
- 24. html veya javascript kullanarak bir CDE panosunda yazdırma değişkeni
- 25. Şablonlu bir sınıfın statik üyelerini sıfırlama
- 26. @Controller sınıfına bir bakla nasıl enjekte edersiniz
- 27. Sınıf üyelerini nasıl başlatacağına dair şaşkınlık
- 28. F # async - iki yapının
- 29. Boş bir sınıf ilan etmek kötü mü?
- 30. Aşağıdaki Enum ilan ettiler
Sanırım kesinlikle gerekli olandan biraz daha güçlü olduğunu belirttiniz. Uçucu, özellikle tek çekirdekli gömülü platformlarda, dişli kodla yardımcı olur. Ama onu nasıl kullanacağını bilmek zorundasın. Ayrıca, DMA ile veya DMA olmaksızın donanım kayıtlarına başvururken, özellikle de statü için sorgulanacak bir kayıt olduğunda etkili bir şekilde zorunludur. Önbelleğinizi ve doğru bir şekilde nasıl yöneteceğinizi ve platformunuzda atomik işlemleri nasıl yapacağınızı anlamak da gereklidir. – RBerteig
Haklısınız. DMA dediğimde düşündüğümü bilmiyordum, MMIO demek istedim. Cevabı daha iyi bir şeye düzenledim (umarım). –
wikipedia (http://en.wikipedia.org/wiki/Volatile_variable) 'a göre C#, C/C++ ile aynı davranışı gösterirken, sadece Java'nın farklı bir semantiği vardır. –