2013-03-30 32 views
5

benim kodİmzasız bir char * dizisini nasıl belirleyebilirim?

#define PRODUCTNAME  "SomeName" 

tanımlamak aşağıdaki ettim ve bir fonksiyonu com_reply(unsigned char* msg, uint16_t lenght) ile göndermek istiyorum.

Şimdi, bağımsız değişkenimin farklı olduğunu gösteren bir uyarı alıyorum. Sadece bilmek istiyorum, problemin ne olduğunu ve ayrıca neden com_replyunsigned char* yerine char* kullanır:

Nasıl bir unsigned char* olarak benim dize yüzden her yerde uyarılar almadan benim program boyunca kullanabilirsiniz tanımlayabilir .

DÜZENLEME: Kesin

Ben kimse burada tanımlar ve temel nedeni bir BANNER böyle, diğer bazı tanımlayıp oluştuğu tanımlamak olmasıdır fazla olması konuşma:

#define PRODUCTNAME  "SomeName" 
#define PRODUCTDATE  "2013-03-30" 
#define BANNER   PRODUCTNAME " (" PRODUCTDATE ")" 

Oluşturduğum Should const değişkenleri ve bunları tanımlamak yerine program başlangıcında birleştirin mi?

+1

Neden 'const char * PRODUCTNAME = "SomeName"' veya benzeri? (ilgisiz, ancak #define bunun için çok fazla dezavantaja sahip.) –

+1

Standart ne kadar uyumlu olduğunu bilmiyorum, ama ne hakkında: '(const unsigned char *)" SomeName "' – Mysticial

+2

Merak etme, 'com_reply' nedir? işlev yapmak? Aslında bir dize olmamalı, 0 ile 255 arasında bir sayıya işaret eden bir şey gibi görünüyor. – austin

cevap

10

Bu çalışması gerekir:

#define PRODUCTNAME  ((const unsigned char *)"SomeName") 
+4

Dâhili olmayan işaretçilere hiçbir zaman (veya herhangi bir şeye dökün) dize hazırlamıyor –

+0

, usulüne uygun olarak belirtilmiş, bu doğru mu? – thumbmunkeys

+2

Bir dizgi değişmezi "const" olmadığı için const olmayan doğrudur. Ama bunu değiştirebileceğinizi ima eder, ki bunu yapamazsınız. – teppic

İlgili konular