2011-05-04 41 views
1

我是新來的目標C.我從C++移植到目標c。在目標中獲取錯誤 - 靜態常量聲明C

RSDS.h 
------ 
#import <Foundation/Foundation.h> 
#import "msg_remote.h" 

@interface RSDS : NSObject { 

} 
@interface RS232Data : NSObject { 

    unsigned char m_abTxMsgImage[RMH_MESSAGE_MAX_SIZE]; // 

Error:variably modified 'm_abTxMsgImage' at file scope

} 

msg_remote.h 
------------ 
static const int RMH_MESSAGE_MAX_SIZE = 4096; 

回答

1

用C const int不起作用像它在C++中。它只是聲明一個變量,你不允許改變,因此你不允許使用它來在數組聲明中調整數組的大小。

你有兩個選擇來解決這個問題。無論是重新編譯應用程序的Objective-C++(由所有.m擴展轉變爲.mm做到這一點),或者把你的

static const int RMH_MESSAGE_MAX_SIZE = 4096; 

#define RMH_MESSAGE_MAX_SIZE 4096 

,或者你可以做

enum 
{ 
    RMH_MESSAGE_MAX_SIZE = 4096 
}; 
+0

謝謝很多。我改變了它,因爲你告訴here.It工作 – Angus 2011-05-04 09:23:17

+0

@Beata:沒問題 – JeremyP 2011-05-04 09:26:22