C: причины, по которым переданный параметр равен NULL после вызова функции в другом модуле - PullRequest
1 голос
/ 29 апреля 2009

У меня странное поведение в программе на Си. Я передаю несколько аргументов функции со следующей подписью в файле с именем foo.c:

foo (char *first, size_t a, size_t b, size_t c, char *last);

Теперь, когда я вызываю эту функцию из другого файла C, который включает в себя foo.h, например с:

foo("first value", 1, 2, 3, "last value");

в foo first, a, b, c верны, но last всегда равен NULL. Неважно, какой тип я использую в качестве последнего параметра, и откуда я вызываю эту функцию (даже непосредственно в main без каких-либо предыдущих операций). Файлы скомпилированы и связаны в один исполняемый файл. Когда я помещаю foo () в тот же исходный файл, откуда он вызывается, все работает.

Кто-нибудь имеет представление о том, что может быть причиной, по которой при передаче функции на аутсорсинг последний параметр равен NULL?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2009

Не видя код, я думаю, что ваше объявление функции (в заголовке) не соответствует определению (в исходном файле).

0 голосов
/ 29 апреля 2009

спасибо за быстрый ответ,

намек Литба был верным. В другом заголовочном файле я пропустил, что size_t был переопределен. Поэтому в основном один исходный файл использовал 32-битный, а другой - 64-битный тип данных size_t.

(не удалось опубликовать какой-либо код, потому что клиент с этим не согласен)

...