2015-11-05 2 views
0

Программирования MSP430, я строка объявляется с использованием .string директиву:Реферирования внешнего MSP430 узла .String в переменном токе экстерне

message: .string "Hello World" 

Я хочу, чтобы ссылаться на что вне модуля, так что я .def «d это:

  .def message 
message: .string "Hello World" 

в C, я хочу, чтобы ссылаться на строку, но получить неправильный характер:

extern char* message; 

int main(void) { 
    char c = *message; // First character of message is listed as 'z' 
} 

Любые идеи о том, что может вызвать это? Он компилируется отлично, и в сборке есть несколько функций, с которыми я ссылаюсь без проблем.

+0

Что происходит, если вы выполняете 'extern char message [];' –

+0

Это очень похоже на этот вопрос x86 с сегодняшнего вечера по аналогичным причинам. http://stackoverflow.com/q/33521099/3857942 –

+0

Я искал сайт навсегда. Наверное, не нашел его, потому что я включил msp430 в параметры поиска. – AaronF

ответ

3

extern char message[];. Когда вы объявляете его как указатель, вы говорите, что message - это значение, которое занимает всего 2 байта памяти и сохраняет адрес. Когда объявляете его как массив char, вы говорите, что это последовательность из 1 байтовых символов, что и есть строка.

+0

Спасибо, я этого не осознавал! – AaronF