rusbaron
@rusbaron
Не стыдно не знать, стыдно не интересоваться

Где можно посмотреть зарезервированные имена переменных?

Добрый вечер! С недавних пор начал изучать с++,ходить на курсы. На курсах проходили тему про namespace и внешние зависимости,решил поподробнее в этом разобраться,написал тестовый код.Пример ниже.
#include <iostream>

using std::cout;
using std::endl;

namespace
{
	int y1, x1;
	extern int x,y;
}

int main()
{
	cout << y1 << endl;
	cout << x << endl;
	return 0;
}

в visual studio сразу подсвечивает мне y1 как ошибку,пишет про "ambiguous symbol".Не могу понять,откуда он берёт y1 как double..я же указал использовать неименованное пространство имён объявленное выше,т.е. по идее все переменные как мне объясняли видны лишь в этом файле и не идут в таблицу экспорта при компиляции...Но почему он не даёт мне создать y1???
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
Ошибку выдает компилятор или линковщик?

Если компилятор, то это довольно странно, попробуйте вывести не y1, а строку, чтобы убедиться что проблема в y1.
Если линковщик, то вероятно у вас y1 попадает external-линковкой из другого файла. Все правильно, из безымянного неймспейса ничего экспортироваться не будет, но это не значит, что имя из этого пространства "перекроет" собой остальные. Вот если вы найдете ДРУГОЙ y1 в другой единице компиляции, и его ТОЖЕ поместите в безымянный namespace, тогда все скомпилится без проблем.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Где можно посмотреть зарезервированные имена переменных?

Вот тут: ru.cppreference.com/w/cpp/keyword.

Но ваш вопрос не про зарезервированные имена и не про зависимости, а про правила поиска имён в C++. Двигайтесь в этом направлении.
Ответ написан
Drakonn
@Drakonn
Инженер-программист
в каждом подключаемом *.h файлике, открываете его и смотрите - какие макросы и константы уже использованы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы