Я не могу скомпилировать код, когда я включаю my_global.h.Компиляция кода c с my_global.h, основная функция в порядке, но ничего больше
Это не должно быть основной функцией, так как данные до этого «собраны» кодом в другом файле c, вместе с этим будет программой (с использованием внешних переменных, которые еще не находятся в коде).
Проблема заключается в том, что я не могу скомпилировать код, когда функция отличается от «main». Я сделал очень простой пример ниже, поэтому, если я заменил «void test() {" на «void main() {» в приведенном ниже примере, компиляция в порядке. Сохранение «теста», но удаление #include my_global.h также в порядке. Но в конечном коде, конечно, мне нужен my_global.h, поэтому я не могу его удалить. Поэтому комбинация не main и my_global.h дает мне эту проблему.
#include <my_global.h>
#include <mysql.h>
#include <stdlib.h>
#include <stdio.h>
#include "extvar.h"
void test() {
printf("Testing testing\n");
}
Я комментирую с $ gcc -c testa.c -o testa.o 'mysql_config --cflags --libs'
.
Сообщение об ошибке:
In file included from testa.c:1:0:
/usr/include/mysql/my_global.h:478:21: error: expected identifier or ‘(’ before ‘)’ token
#define test(a) ((a) ? 1 : 0)
^
testa.c:7:6: note: in expansion of macro ‘test’
void test() {
^
Я очень благодарен за вашу помощь.
Видимо, есть макрос с именем 'test'. И функция под названием 'test'. Угадай, что? Вы путаете компилятор. И да, сообщение об ошибке * чрезвычайно * ясно. –
Да, переименуйте свою функцию в 'my_test()', что также было бы смешно! Потому что у всех вещей 'MySQL' есть' my', и теперь вам понадобится один, чтобы включить 'my_'. –
@IharobAlAsimi Может ли всегда работать с 'real_my_test', как это принято в API MySQL. – tadman