Компилятор в том виде, в котором он написан в настоящее время, не делает никаких усилий, чтобы узнать, что заключено в кавычки в первом параметре. Он также не учитывает значения, передаваемые во втором параметре, и не имеет представления, верны ли они. Они не оцениваются до тех пор, пока не будет вызвана функция, где возникает исключение, потому что они неверны. IOW, компилятор не пытается сделать ничего, что позволило бы ему выдавать такое предупреждение или ошибку.
Когда функция вызывается во время выполнения, она проверяет количество аргументов, являются ли они правильным типомили нет, и предоставили ли вы правильные аргументы. Компилятор не пытается сделать это каким-либо образом. Это только гарантирует, что вы предоставите строку для первого параметра и массив const для второго.
Таким образом, чтобы напрямую ответить на заданный вами вопрос: Нет, нет способа проверить ошибкукомпилятором, чтобы он выдал предупреждение, потому что компилятор не пытается проверить что-либо, что позволило бы ему сделать это.